Index: go/src/infra/gae/libs/wrapper/doc.go |
diff --git a/go/src/infra/gae/libs/wrapper/doc.go b/go/src/infra/gae/libs/wrapper/doc.go |
new file mode 100644 |
index 0000000000000000000000000000000000000000..32f4f786a12ddab0f5a98602cb5563fc448668d0 |
--- /dev/null |
+++ b/go/src/infra/gae/libs/wrapper/doc.go |
@@ -0,0 +1,40 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Package wrapper provides a fakable wrapped interface for the appengine SDK's |
+// APIs. This means that it's possible to mock all of the supported appengine |
+// APIs for testing (or potentially implement a different backend for them, |
+// though you would still need to provide enough of the appengine SDK for a |
+// few key types). |
+// |
+// wrapper currently provides interfaces for: |
+// * Datastore |
+// * Memcache |
+// * TaskQueue |
+// * GlobalInfo (e.g. Namespace, AppID, etc.) |
+// |
+// A package which implements the wrapper is expected to provide the following: |
+// * A package function `Enable(c context.Context, ...) context.Context` |
+// This function is expected to add any information to c which is necessary |
+// for the rest of its implementations to work. This may be something like |
+// an `appengine.Context` or some connection information for an external |
+// server. The `...` in the function signature may be any additional data |
+// needed. |
+// * Any of the package functions: |
+// |
+// UseDS(context.Context) context.Context |
+// UseMC(context.Context) context.Context |
+// UseTQ(context.Context) context.Context |
+// UseGI(context.Context) context.Context |
+// |
+// each of which would call wrapper.Set<service>Factory with the factory |
+// function for that interface type. |
+// * A `Use(context.Context) context.Context` function which calls all of the |
+// `Use*` package functions implemented by the package. |
+// * Partially-implemented interfaces should embed one of the Dummy* structs |
+// which will panic with an appropriate error for unimplemented |
+// methods. |
+// |
+// see "infra/gae/libs/wrapper/gae" for an appengine-backed implementation. |
+package wrapper |