| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |  | 
| 2 // Use of this source code is governed by a BSD-style license that can be |  | 
| 3 // found in the LICENSE file. |  | 
| 4 |  | 
| 5 package dummy |  | 
| 6 |  | 
| 7 import ( |  | 
| 8         "fmt" |  | 
| 9         "runtime" |  | 
| 10         "strings" |  | 
| 11         "time" |  | 
| 12 |  | 
| 13         "github.com/luci/gae" |  | 
| 14         "golang.org/x/net/context" |  | 
| 15 ) |  | 
| 16 |  | 
| 17 const niFmtStr = "dummy: method %s.%s is not implemented" |  | 
| 18 |  | 
| 19 // ni returns an error whose message is an appropriate expansion of niFmtStr. |  | 
| 20 // |  | 
| 21 // It walks the stack to find out what interface and method it's being |  | 
| 22 // called from. For example, it might return a message which looks like: |  | 
| 23 //   dummy: method RawDatastore.Get is not implemented |  | 
| 24 // |  | 
| 25 // This allows the various dummy objects below to have clear boilerplate which |  | 
| 26 // avoids copy+paste errors (such as if each one of them filled in the template |  | 
| 27 // manually). |  | 
| 28 // |  | 
| 29 // If this function is somehow called from something other than one of the dummy |  | 
| 30 // objects in this package, it will substitute the string UNKNOWN for the |  | 
| 31 // interface and/or the method in the niFmtStr template. |  | 
| 32 func ni() error { |  | 
| 33         iface := "UNKNOWN" |  | 
| 34         funcName := "UNKNOWN" |  | 
| 35 |  | 
| 36         if ptr, _, _, ok := runtime.Caller(1); ok { |  | 
| 37                 f := runtime.FuncForPC(ptr) |  | 
| 38                 n := f.Name() |  | 
| 39                 if n != "" { |  | 
| 40                         parts := strings.Split(n, ".") |  | 
| 41                         if len(parts) > 2 { |  | 
| 42                                 switch parts[len(parts)-2] { |  | 
| 43                                 case "rds": |  | 
| 44                                         iface = "RawDatastore" |  | 
| 45                                 case "mc": |  | 
| 46                                         iface = "Memcache" |  | 
| 47                                 case "tq": |  | 
| 48                                         iface = "TaskQueue" |  | 
| 49                                 case "gi": |  | 
| 50                                         iface = "GlobalInfo" |  | 
| 51                                 case "qy": |  | 
| 52                                         iface = "DSQuery" |  | 
| 53                                 } |  | 
| 54                                 funcName = parts[len(parts)-1] |  | 
| 55                         } |  | 
| 56                 } |  | 
| 57         } |  | 
| 58 |  | 
| 59         return fmt.Errorf(niFmtStr, iface, funcName) |  | 
| 60 } |  | 
| 61 |  | 
| 62 /////////////////////////////////// rds //////////////////////////////////// |  | 
| 63 |  | 
| 64 type rds struct{} |  | 
| 65 |  | 
| 66 func (rds) NewKey(string, string, int64, gae.DSKey) gae.DSKey                   
      { panic(ni()) } |  | 
| 67 func (rds) DecodeKey(string) (gae.DSKey, error)                                 
      { panic(ni()) } |  | 
| 68 func (rds) KeyFromTokens(a, n string, t []gae.DSKeyTok) (gae.DSKey, error)      
      { panic(ni()) } |  | 
| 69 func (rds) Put(gae.DSKey, gae.DSPropertyLoadSaver) (gae.DSKey, error)           
      { panic(ni()) } |  | 
| 70 func (rds) Get(gae.DSKey, gae.DSPropertyLoadSaver) error                        
      { panic(ni()) } |  | 
| 71 func (rds) Delete(gae.DSKey) error                                              
      { panic(ni()) } |  | 
| 72 func (rds) PutMulti([]gae.DSKey, []gae.DSPropertyLoadSaver) ([]gae.DSKey, error)
      { panic(ni()) } |  | 
| 73 func (rds) GetMulti([]gae.DSKey, []gae.DSPropertyLoadSaver) error               
      { panic(ni()) } |  | 
| 74 func (rds) DeleteMulti([]gae.DSKey) error                                       
      { panic(ni()) } |  | 
| 75 func (rds) NewQuery(string) gae.DSQuery                                         
      { panic(ni()) } |  | 
| 76 func (rds) Run(gae.DSQuery) gae.RDSIterator                                     
      { panic(ni()) } |  | 
| 77 func (rds) GetAll(gae.DSQuery, *[]gae.DSPropertyMap) ([]gae.DSKey, error)       
      { panic(ni()) } |  | 
| 78 func (rds) Count(gae.DSQuery) (int, error)                                      
      { panic(ni()) } |  | 
| 79 func (rds) RunInTransaction(func(context.Context) error, *gae.DSTransactionOptio
     ns) error { |  | 
| 80         panic(ni()) |  | 
| 81 } |  | 
| 82 |  | 
| 83 var dummyRDSInst = rds{} |  | 
| 84 |  | 
| 85 // RDS returns a dummy RawDatastore implementation suitable for embedding. |  | 
| 86 // Every method panics with a message containing the name of the method which |  | 
| 87 // was unimplemented. |  | 
| 88 func RDS() gae.RawDatastore { return dummyRDSInst } |  | 
| 89 |  | 
| 90 /////////////////////////////////// mc //////////////////////////////////// |  | 
| 91 |  | 
| 92 type mc struct{} |  | 
| 93 |  | 
| 94 func (mc) Add(gae.MCItem) error                             { panic(ni()) } |  | 
| 95 func (mc) NewItem(key string) gae.MCItem                    { panic(ni()) } |  | 
| 96 func (mc) Set(gae.MCItem) error                             { panic(ni()) } |  | 
| 97 func (mc) Get(string) (gae.MCItem, error)                   { panic(ni()) } |  | 
| 98 func (mc) Delete(string) error                              { panic(ni()) } |  | 
| 99 func (mc) CompareAndSwap(gae.MCItem) error                  { panic(ni()) } |  | 
| 100 func (mc) AddMulti([]gae.MCItem) error                      { panic(ni()) } |  | 
| 101 func (mc) SetMulti([]gae.MCItem) error                      { panic(ni()) } |  | 
| 102 func (mc) GetMulti([]string) (map[string]gae.MCItem, error) { panic(ni()) } |  | 
| 103 func (mc) DeleteMulti([]string) error                       { panic(ni()) } |  | 
| 104 func (mc) CompareAndSwapMulti([]gae.MCItem) error           { panic(ni()) } |  | 
| 105 func (mc) Increment(string, int64, uint64) (uint64, error)  { panic(ni()) } |  | 
| 106 func (mc) IncrementExisting(string, int64) (uint64, error)  { panic(ni()) } |  | 
| 107 func (mc) Flush() error                                     { panic(ni()) } |  | 
| 108 func (mc) Stats() (*gae.MCStatistics, error)                { panic(ni()) } |  | 
| 109 |  | 
| 110 var dummyMCInst = mc{} |  | 
| 111 |  | 
| 112 // MC returns a dummy Memcache implementation suitable for embedding. |  | 
| 113 // Every method panics with a message containing the name of the method which |  | 
| 114 // was unimplemented. |  | 
| 115 func MC() gae.Memcache { return dummyMCInst } |  | 
| 116 |  | 
| 117 /////////////////////////////////// tq //////////////////////////////////// |  | 
| 118 |  | 
| 119 type tq struct{} |  | 
| 120 |  | 
| 121 func (tq) Add(*gae.TQTask, string) (*gae.TQTask, error)               { panic(ni
     ()) } |  | 
| 122 func (tq) Delete(*gae.TQTask, string) error                           { panic(ni
     ()) } |  | 
| 123 func (tq) AddMulti([]*gae.TQTask, string) ([]*gae.TQTask, error)      { panic(ni
     ()) } |  | 
| 124 func (tq) DeleteMulti([]*gae.TQTask, string) error                    { panic(ni
     ()) } |  | 
| 125 func (tq) Lease(int, string, int) ([]*gae.TQTask, error)              { panic(ni
     ()) } |  | 
| 126 func (tq) LeaseByTag(int, string, int, string) ([]*gae.TQTask, error) { panic(ni
     ()) } |  | 
| 127 func (tq) ModifyLease(*gae.TQTask, string, int) error                 { panic(ni
     ()) } |  | 
| 128 func (tq) Purge(string) error                                         { panic(ni
     ()) } |  | 
| 129 func (tq) QueueStats([]string) ([]gae.TQStatistics, error)            { panic(ni
     ()) } |  | 
| 130 |  | 
| 131 var dummyTQInst = tq{} |  | 
| 132 |  | 
| 133 // TQ returns a dummy TaskQueue implementation suitable for embedding. |  | 
| 134 // Every method panics with a message containing the name of the method which |  | 
| 135 // was unimplemented. |  | 
| 136 func TQ() gae.TaskQueue { return dummyTQInst } |  | 
| 137 |  | 
| 138 /////////////////////////////////// qy //////////////////////////////////// |  | 
| 139 |  | 
| 140 type qy struct{} |  | 
| 141 |  | 
| 142 func (qy) Ancestor(ancestor gae.DSKey) gae.DSQuery                { panic(ni()) 
     } |  | 
| 143 func (qy) Distinct() gae.DSQuery                                  { panic(ni()) 
     } |  | 
| 144 func (qy) End(c gae.DSCursor) gae.DSQuery                         { panic(ni()) 
     } |  | 
| 145 func (qy) EventualConsistency() gae.DSQuery                       { panic(ni()) 
     } |  | 
| 146 func (qy) Filter(filterStr string, value interface{}) gae.DSQuery { panic(ni()) 
     } |  | 
| 147 func (qy) KeysOnly() gae.DSQuery                                  { panic(ni()) 
     } |  | 
| 148 func (qy) Limit(limit int) gae.DSQuery                            { panic(ni()) 
     } |  | 
| 149 func (qy) Offset(offset int) gae.DSQuery                          { panic(ni()) 
     } |  | 
| 150 func (qy) Order(fieldName string) gae.DSQuery                     { panic(ni()) 
     } |  | 
| 151 func (qy) Project(fieldNames ...string) gae.DSQuery               { panic(ni()) 
     } |  | 
| 152 func (qy) Start(c gae.DSCursor) gae.DSQuery                       { panic(ni()) 
     } |  | 
| 153 |  | 
| 154 var dummyQYInst = qy{} |  | 
| 155 |  | 
| 156 // QY returns a dummy gae.DSQuery implementation suitable for embedding. |  | 
| 157 // Every method panics with a message containing the name of the method which |  | 
| 158 // was unimplemented. |  | 
| 159 func QY() gae.DSQuery { return dummyQYInst } |  | 
| 160 |  | 
| 161 /////////////////////////////////// gi //////////////////////////////////// |  | 
| 162 |  | 
| 163 type gi struct{} |  | 
| 164 |  | 
| 165 func (gi) AccessToken(scopes ...string) (token string, expiry time.Time, err err
     or) { panic(ni()) } |  | 
| 166 func (gi) AppID() string                                                        
         { panic(ni()) } |  | 
| 167 func (gi) ModuleHostname(module, version, instance string) (string, error)      
         { panic(ni()) } |  | 
| 168 func (gi) ModuleName() string                                                   
         { panic(ni()) } |  | 
| 169 func (gi) DefaultVersionHostname() string                                       
         { panic(ni()) } |  | 
| 170 func (gi) PublicCertificates() ([]gae.GICertificate, error)                     
         { panic(ni()) } |  | 
| 171 func (gi) RequestID() string                                                    
         { panic(ni()) } |  | 
| 172 func (gi) ServiceAccount() (string, error)                                      
         { panic(ni()) } |  | 
| 173 func (gi) SignBytes(bytes []byte) (keyName string, signature []byte, err error) 
         { panic(ni()) } |  | 
| 174 func (gi) VersionID() string                                                    
         { panic(ni()) } |  | 
| 175 func (gi) Namespace(namespace string) (context.Context, error)                  
         { panic(ni()) } |  | 
| 176 func (gi) Datacenter() string                                                   
         { panic(ni()) } |  | 
| 177 func (gi) InstanceID() string                                                   
         { panic(ni()) } |  | 
| 178 func (gi) IsDevAppServer() bool                                                 
         { panic(ni()) } |  | 
| 179 func (gi) ServerSoftware() string                                               
         { panic(ni()) } |  | 
| 180 func (gi) IsCapabilityDisabled(err error) bool                                  
         { panic(ni()) } |  | 
| 181 func (gi) IsOverQuota(err error) bool                                           
         { panic(ni()) } |  | 
| 182 func (gi) IsTimeoutError(err error) bool                                        
         { panic(ni()) } |  | 
| 183 |  | 
| 184 var dummyGIInst = gi{} |  | 
| 185 |  | 
| 186 // GI returns a dummy GlobalInfo implementation suitable for embedding. |  | 
| 187 // Every method panics with a message containing the name of the method which |  | 
| 188 // was unimplemented. |  | 
| 189 func GI() gae.GlobalInfo { return dummyGIInst } |  | 
| OLD | NEW | 
|---|