From 6849b381dc5dd36ef107419f23ff3b9f4d717b4e Mon Sep 17 00:00:00 2001 From: Rohit Jnagal Date: Fri, 12 Jun 2015 22:59:13 +0000 Subject: [PATCH] Update cadvisor dependency. Godep also decided to remove unused appengine dependency. --- Godeps/Godeps.json | 77 +- .../google/cadvisor/api/versions.go | 3 +- .../{storage => cache}/memory/memory.go | 59 +- .../{storage => cache}/memory/memory_test.go | 44 +- .../cadvisor/container/docker/factory.go | 16 +- .../cadvisor/container/docker/handler.go | 30 +- .../container/libcontainer/helpers.go | 43 +- .../google/cadvisor/container/raw/handler.go | 8 +- .../src/github.com/google/cadvisor/fs/fs.go | 7 +- .../google/cadvisor/info/v1/container.go | 9 +- .../google/cadvisor/info/v2/container.go | 14 +- .../google/cadvisor/manager/container.go | 60 +- .../google/cadvisor/manager/container_test.go | 24 +- .../google/cadvisor/manager/machine.go | 7 +- .../google/cadvisor/manager/manager.go | 39 +- .../google/cadvisor/manager/manager_test.go | 18 +- .../cadvisor/metrics/prometheus_test.go | 19 +- .../google/cadvisor/pages/containers_html.go | 10 + .../cadvisor/pages/static/containers_js.go | 106 +- .../google/cadvisor/pages/static/static.go | 8 + .../cadvisor/storage/bigquery/bigquery.go | 169 - .../storage/bigquery/client/client.go | 53 - .../bigquery/client/example/example.go | 21 - .../cadvisor/storage/influxdb/influxdb.go | 144 - .../storage/influxdb/influxdb_test.go | 2 +- .../google/cadvisor/storage/redis/redis.go | 6 - .../google/cadvisor/storage/statsd/client.go | 73 + .../google/cadvisor/storage/storage.go | 7 - .../google/cadvisor/storage/test/mock.go | 5 - .../cadvisor/storage/test/storagetests.go | 123 - .../google/cadvisor/summary/buffer.go | 2 +- .../google/cadvisor/utils/sysfs/sysfs.go | 19 +- .../google/cadvisor/utils/sysinfo/sysinfo.go | 10 +- .../cadvisor/utils/sysinfo/sysinfo_test.go | 3 +- .../google/cadvisor/version/version.go | 2 +- .../google.golang.org/appengine/.travis.yml | 14 - .../src/google.golang.org/appengine/LICENSE | 202 -- .../src/google.golang.org/appengine/README.md | 65 - .../google.golang.org/appengine/appengine.go | 78 - .../appengine/appengine_test.go | 45 - .../appengine/channel/channel.go | 81 - .../appengine/channel/channel_test.go | 17 - .../appengine/datastore/datastore.go | 405 --- .../appengine/datastore/datastore_test.go | 1499 --------- .../appengine/datastore/doc.go | 316 -- .../appengine/datastore/key.go | 309 -- .../appengine/datastore/key_test.go | 214 -- .../appengine/datastore/load.go | 334 -- .../appengine/datastore/prop.go | 294 -- .../appengine/datastore/prop_test.go | 559 ---- .../appengine/datastore/query.go | 712 ----- .../appengine/datastore/query_test.go | 580 ---- .../appengine/datastore/save.go | 300 -- .../appengine/datastore/time_test.go | 65 - .../appengine/datastore/transaction.go | 138 - .../appengine/delay/delay.go | 275 -- .../appengine/delay/delay_test.go | 307 -- .../appengine/demos/guestbook/app.yaml | 19 - .../appengine/demos/guestbook/favicon.ico | Bin 1150 -> 0 bytes .../appengine/demos/guestbook/guestbook.go | 102 - .../appengine/demos/guestbook/index.yaml | 7 - .../demos/guestbook/templates/guestbook.html | 26 - .../appengine/demos/helloworld/app.yaml | 15 - .../appengine/demos/helloworld/favicon.ico | Bin 1150 -> 0 bytes .../appengine/demos/helloworld/helloworld.go | 45 - .../src/google.golang.org/appengine/errors.go | 46 - .../google.golang.org/appengine/file/file.go | 26 - .../google.golang.org/appengine/identity.go | 141 - .../appengine/image/image.go | 65 - .../appengine/internal/aetesting/fake.go | 88 - .../appengine/internal/api.go | 589 ---- .../appengine/internal/api_race_test.go | 5 - .../appengine/internal/api_test.go | 412 --- .../appengine/internal/app_id.go | 28 - .../appengine/internal/app_id_test.go | 34 - .../app_identity/app_identity_service.pb.go | 295 -- .../app_identity/app_identity_service.proto | 64 - .../appengine/internal/base/api_base.pb.go | 134 - .../appengine/internal/base/api_base.proto | 33 - .../internal/channel/channel_service.pb.go | 153 - .../internal/channel/channel_service.proto | 30 - .../internal/datastore/datastore_v3.pb.go | 2787 ----------------- .../internal/datastore/datastore_v3.proto | 541 ---- .../appengine/internal/identity.go | 12 - .../appengine/internal/identity_vm.go | 85 - .../internal/image/images_service.pb.go | 848 ----- .../internal/image/images_service.proto | 162 - .../appengine/internal/internal.go | 165 - .../appengine/internal/internal_test.go | 54 - .../appengine/internal/log/log_service.pb.go | 898 ------ .../appengine/internal/log/log_service.proto | 150 - .../internal/mail/mail_service.pb.go | 228 -- .../internal/mail/mail_service.proto | 45 - .../internal/memcache/memcache_service.pb.go | 942 ------ .../internal/memcache/memcache_service.proto | 165 - .../appengine/internal/metadata.go | 61 - .../internal/modules/modules_service.pb.go | 374 --- .../internal/modules/modules_service.proto | 80 - .../appengine/internal/net.go | 63 - .../appengine/internal/net_test.go | 55 - .../appengine/internal/regen.sh | 36 - .../internal/remote_api/remote_api.pb.go | 230 -- .../internal/remote_api/remote_api.proto | 44 - .../appengine/internal/search/search.pb.go | 2072 ------------ .../appengine/internal/search/search.proto | 376 --- .../taskqueue/taskqueue_service.pb.go | 1890 ----------- .../taskqueue/taskqueue_service.proto | 342 -- .../appengine/internal/transaction.go | 30 - .../internal/urlfetch/urlfetch_service.pb.go | 355 --- .../internal/urlfetch/urlfetch_service.proto | 64 - .../internal/user/user_service.pb.go | 288 -- .../internal/user/user_service.proto | 58 - .../internal/xmpp/xmpp_service.pb.go | 428 --- .../internal/xmpp/xmpp_service.proto | 83 - .../google.golang.org/appengine/log/log.go | 322 -- .../appengine/log/log_test.go | 108 - .../google.golang.org/appengine/mail/mail.go | 123 - .../appengine/mail/mail_test.go | 65 - .../appengine/memcache/memcache.go | 525 ---- .../appengine/memcache/memcache_test.go | 255 -- .../appengine/module/module.go | 112 - .../appengine/module/module_test.go | 124 - .../google.golang.org/appengine/namespace.go | 48 - .../appengine/namespace_test.go | 33 - .../appengine/remote_api/client.go | 173 - .../appengine/remote_api/client_test.go | 20 - .../appengine/remote_api/remote_api.go | 142 - .../appengine/search/field.go | 144 - .../appengine/search/search.go | 853 ----- .../appengine/search/search_test.go | 650 ---- .../appengine/taskqueue/taskqueue.go | 493 --- .../appengine/taskqueue/taskqueue_test.go | 103 - .../google.golang.org/appengine/timeout.go | 49 - .../appengine/timeout_test.go | 59 - .../appengine/urlfetch/urlfetch.go | 211 -- .../google.golang.org/appengine/user/oauth.go | 46 - .../google.golang.org/appengine/user/user.go | 103 - .../appengine/user/user_test.go | 97 - .../google.golang.org/appengine/xmpp/xmpp.go | 251 -- .../appengine/xmpp/xmpp_test.go | 173 - pkg/kubelet/cadvisor/cadvisor_linux.go | 2 +- 141 files changed, 487 insertions(+), 29214 deletions(-) rename Godeps/_workspace/src/github.com/google/cadvisor/{storage => cache}/memory/memory.go (62%) rename Godeps/_workspace/src/github.com/google/cadvisor/{storage => cache}/memory/memory_test.go (56%) create mode 100644 Godeps/_workspace/src/github.com/google/cadvisor/storage/statsd/client.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/.travis.yml delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/LICENSE delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/README.md delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/appengine.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/appengine_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/channel/channel.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/channel/channel_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/doc.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/key.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/key_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/load.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/prop.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/prop_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/query.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/query_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/save.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/time_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/datastore/transaction.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/delay/delay.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/delay/delay_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/app.yaml delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/favicon.ico delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/guestbook.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/index.yaml delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/templates/guestbook.html delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/app.yaml delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/favicon.ico delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/helloworld.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/errors.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/file/file.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/identity.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/image/image.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/aetesting/fake.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/api.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/api_race_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/api_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/app_id.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/app_id_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/identity.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/identity_vm.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/internal.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/internal_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/metadata.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/net.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/net_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/regen.sh delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/transaction.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.pb.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.proto delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/log/log.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/log/log_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/mail/mail.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/mail/mail_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/module/module.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/module/module_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/namespace.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/namespace_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/remote_api/client.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/remote_api/client_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/remote_api/remote_api.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/search/field.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/search/search.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/search/search_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/timeout.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/timeout_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/urlfetch/urlfetch.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/user/oauth.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/user/user.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/user/user_test.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp.go delete mode 100644 Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp_test.go diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index a3d1fea365f..40f1a25f2a4 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -241,88 +241,93 @@ }, { "ImportPath": "github.com/google/cadvisor/api", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" + }, + { + "ImportPath": "github.com/google/cadvisor/cache/memory", + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/collector", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/container", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/events", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/fs", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/healthz", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/http", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/info/v1", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/info/v2", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/manager", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/metrics", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/pages", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/storage", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/summary", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/utils", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/validate", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/cadvisor/version", - "Comment": "0.14.0-9-ga96f2f9", - "Rev": "a96f2f93256f34a1f330728d146374e43c6c87ac" + "Comment": "0.15.1", + "Rev": "ec588def40e1bb59f28f5a293b279f6762d13d44" }, { "ImportPath": "github.com/google/go-github/github", @@ -534,10 +539,6 @@ "ImportPath": "golang.org/x/oauth2", "Rev": "b5adcc2dcdf009d0391547edc6ecbaff889f5bb9" }, - { - "ImportPath": "google.golang.org/appengine", - "Rev": "6aa67407028217c352e215f5af320a429d0bcf5f" - }, { "ImportPath": "google.golang.org/cloud/compute/metadata", "Rev": "2e43671e4ad874a7bca65746ff3edb38e6e93762" diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/api/versions.go b/Godeps/_workspace/src/github.com/google/cadvisor/api/versions.go index bba8be5121d..bac878e4fd5 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/api/versions.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/api/versions.go @@ -426,8 +426,7 @@ func convertStats(cont *info.ContainerInfo) []v2.ContainerStats { stat.Memory = val.Memory } if stat.HasNetwork { - // TODO(rjnagal): Return stats about all network interfaces. - stat.Network = append(stat.Network, val.Network) + stat.Network.Interfaces = val.Network.Interfaces } if stat.HasFilesystem { stat.Filesystem = val.Filesystem diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/memory/memory.go b/Godeps/_workspace/src/github.com/google/cadvisor/cache/memory/memory.go similarity index 62% rename from Godeps/_workspace/src/github.com/google/cadvisor/storage/memory/memory.go rename to Godeps/_workspace/src/github.com/google/cadvisor/cache/memory/memory.go index 3f56b95eb9d..d3c23dcf992 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/memory/memory.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/cache/memory/memory.go @@ -25,16 +25,16 @@ import ( "github.com/google/cadvisor/utils" ) -// TODO(vmarmol): See about refactoring this class, we have an unecessary redirection of containerStorage and InMemoryStorage. -// containerStorage is used to store per-container information -type containerStorage struct { +// TODO(vmarmol): See about refactoring this class, we have an unecessary redirection of containerCache and InMemoryCache. +// containerCache is used to store per-container information +type containerCache struct { ref info.ContainerReference recentStats *utils.TimedStore maxAge time.Duration lock sync.RWMutex } -func (self *containerStorage) AddStats(stats *info.ContainerStats) error { +func (self *containerCache) AddStats(stats *info.ContainerStats) error { self.lock.Lock() defer self.lock.Unlock() @@ -43,7 +43,7 @@ func (self *containerStorage) AddStats(stats *info.ContainerStats) error { return nil } -func (self *containerStorage) RecentStats(start, end time.Time, maxStats int) ([]*info.ContainerStats, error) { +func (self *containerCache) RecentStats(start, end time.Time, maxStats int) ([]*info.ContainerStats, error) { self.lock.RLock() defer self.lock.RUnlock() result := self.recentStats.InTimeRange(start, end, maxStats) @@ -54,31 +54,31 @@ func (self *containerStorage) RecentStats(start, end time.Time, maxStats int) ([ return converted, nil } -func newContainerStore(ref info.ContainerReference, maxAge time.Duration) *containerStorage { - return &containerStorage{ +func newContainerStore(ref info.ContainerReference, maxAge time.Duration) *containerCache { + return &containerCache{ ref: ref, recentStats: utils.NewTimedStore(maxAge, -1), maxAge: maxAge, } } -type InMemoryStorage struct { - lock sync.RWMutex - containerStorageMap map[string]*containerStorage - maxAge time.Duration - backend storage.StorageDriver +type InMemoryCache struct { + lock sync.RWMutex + containerCacheMap map[string]*containerCache + maxAge time.Duration + backend storage.StorageDriver } -func (self *InMemoryStorage) AddStats(ref info.ContainerReference, stats *info.ContainerStats) error { - var cstore *containerStorage +func (self *InMemoryCache) AddStats(ref info.ContainerReference, stats *info.ContainerStats) error { + var cstore *containerCache var ok bool func() { self.lock.Lock() defer self.lock.Unlock() - if cstore, ok = self.containerStorageMap[ref.Name]; !ok { + if cstore, ok = self.containerCacheMap[ref.Name]; !ok { cstore = newContainerStore(ref, self.maxAge) - self.containerStorageMap[ref.Name] = cstore + self.containerCacheMap[ref.Name] = cstore } }() @@ -93,13 +93,13 @@ func (self *InMemoryStorage) AddStats(ref info.ContainerReference, stats *info.C return cstore.AddStats(stats) } -func (self *InMemoryStorage) RecentStats(name string, start, end time.Time, maxStats int) ([]*info.ContainerStats, error) { - var cstore *containerStorage +func (self *InMemoryCache) RecentStats(name string, start, end time.Time, maxStats int) ([]*info.ContainerStats, error) { + var cstore *containerCache var ok bool err := func() error { self.lock.RLock() defer self.lock.RUnlock() - if cstore, ok = self.containerStorageMap[name]; !ok { + if cstore, ok = self.containerCacheMap[name]; !ok { return fmt.Errorf("unable to find data for container %v", name) } return nil @@ -111,9 +111,16 @@ func (self *InMemoryStorage) RecentStats(name string, start, end time.Time, maxS return cstore.RecentStats(start, end, maxStats) } -func (self *InMemoryStorage) Close() error { +func (self *InMemoryCache) Close() error { self.lock.Lock() - self.containerStorageMap = make(map[string]*containerStorage, 32) + self.containerCacheMap = make(map[string]*containerCache, 32) + self.lock.Unlock() + return nil +} + +func (self *InMemoryCache) RemoveContainer(containerName string) error { + self.lock.Lock() + delete(self.containerCacheMap, containerName) self.lock.Unlock() return nil } @@ -121,11 +128,11 @@ func (self *InMemoryStorage) Close() error { func New( maxAge time.Duration, backend storage.StorageDriver, -) *InMemoryStorage { - ret := &InMemoryStorage{ - containerStorageMap: make(map[string]*containerStorage, 32), - maxAge: maxAge, - backend: backend, +) *InMemoryCache { + ret := &InMemoryCache{ + containerCacheMap: make(map[string]*containerCache, 32), + maxAge: maxAge, + backend: backend, } return ret } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/memory/memory_test.go b/Godeps/_workspace/src/github.com/google/cadvisor/cache/memory/memory_test.go similarity index 56% rename from Godeps/_workspace/src/github.com/google/cadvisor/storage/memory/memory_test.go rename to Godeps/_workspace/src/github.com/google/cadvisor/cache/memory/memory_test.go index d95f4c11c20..2bf48425fd3 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/memory/memory_test.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/cache/memory/memory_test.go @@ -40,58 +40,58 @@ func makeStat(i int) *info.ContainerStats { } } -func getRecentStats(t *testing.T, memoryStorage *InMemoryStorage, numStats int) []*info.ContainerStats { - stats, err := memoryStorage.RecentStats(containerName, zero, zero, numStats) +func getRecentStats(t *testing.T, memoryCache *InMemoryCache, numStats int) []*info.ContainerStats { + stats, err := memoryCache.RecentStats(containerName, zero, zero, numStats) require.Nil(t, err) return stats } func TestAddStats(t *testing.T) { - memoryStorage := New(60*time.Second, nil) + memoryCache := New(60*time.Second, nil) assert := assert.New(t) - assert.Nil(memoryStorage.AddStats(containerRef, makeStat(0))) - assert.Nil(memoryStorage.AddStats(containerRef, makeStat(1))) - assert.Nil(memoryStorage.AddStats(containerRef, makeStat(2))) - assert.Nil(memoryStorage.AddStats(containerRef, makeStat(0))) + assert.Nil(memoryCache.AddStats(containerRef, makeStat(0))) + assert.Nil(memoryCache.AddStats(containerRef, makeStat(1))) + assert.Nil(memoryCache.AddStats(containerRef, makeStat(2))) + assert.Nil(memoryCache.AddStats(containerRef, makeStat(0))) containerRef2 := info.ContainerReference{ Name: "/container2", } - assert.Nil(memoryStorage.AddStats(containerRef2, makeStat(0))) - assert.Nil(memoryStorage.AddStats(containerRef2, makeStat(1))) + assert.Nil(memoryCache.AddStats(containerRef2, makeStat(0))) + assert.Nil(memoryCache.AddStats(containerRef2, makeStat(1))) } func TestRecentStatsNoRecentStats(t *testing.T) { - memoryStorage := makeWithStats(0) + memoryCache := makeWithStats(0) - _, err := memoryStorage.RecentStats(containerName, zero, zero, 60) + _, err := memoryCache.RecentStats(containerName, zero, zero, 60) assert.NotNil(t, err) } -// Make an instance of InMemoryStorage with n stats. -func makeWithStats(n int) *InMemoryStorage { - memoryStorage := New(60*time.Second, nil) +// Make an instance of InMemoryCache with n stats. +func makeWithStats(n int) *InMemoryCache { + memoryCache := New(60*time.Second, nil) for i := 0; i < n; i++ { - memoryStorage.AddStats(containerRef, makeStat(i)) + memoryCache.AddStats(containerRef, makeStat(i)) } - return memoryStorage + return memoryCache } func TestRecentStatsGetZeroStats(t *testing.T) { - memoryStorage := makeWithStats(10) + memoryCache := makeWithStats(10) - assert.Len(t, getRecentStats(t, memoryStorage, 0), 0) + assert.Len(t, getRecentStats(t, memoryCache, 0), 0) } func TestRecentStatsGetSomeStats(t *testing.T) { - memoryStorage := makeWithStats(10) + memoryCache := makeWithStats(10) - assert.Len(t, getRecentStats(t, memoryStorage, 5), 5) + assert.Len(t, getRecentStats(t, memoryCache, 5), 5) } func TestRecentStatsGetAllStats(t *testing.T) { - memoryStorage := makeWithStats(10) + memoryCache := makeWithStats(10) - assert.Len(t, getRecentStats(t, memoryStorage, -1), 10) + assert.Len(t, getRecentStats(t, memoryCache, -1), 10) } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/factory.go b/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/factory.go index b8cd4ad27e3..7dd3b1edb89 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/factory.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/factory.go @@ -24,7 +24,6 @@ import ( "sync" "github.com/docker/libcontainer/cgroups" - "github.com/docker/libcontainer/cgroups/systemd" "github.com/fsouza/go-dockerclient" "github.com/golang/glog" "github.com/google/cadvisor/container" @@ -55,16 +54,19 @@ var check = sync.Once{} func UseSystemd() bool { check.Do(func() { - // run and initialize useSystemd - useSystemd = systemd.UseSystemd() - if !useSystemd { - // Second attempt at checking for systemd, check for a "name=systemd" cgroup. - mnt, err := cgroups.FindCgroupMountpoint("cpu") + useSystemd = false + + // Check for system.slice in systemd and cpu cgroup. + for _, cgroupType := range []string{"name=systemd", "cpu"} { + mnt, err := cgroups.FindCgroupMountpoint(cgroupType) if err == nil { // systemd presence does not mean systemd controls cgroups. // If system.slice cgroup exists, then systemd is taking control. // This breaks if user creates system.slice manually :) - useSystemd = utils.FileExists(mnt + "/system.slice") + if utils.FileExists(path.Join(mnt, "system.slice")) { + useSystemd = true + break + } } } }) diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/handler.go b/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/handler.go index 2e3f8cf4551..6d8ca8c7f09 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/handler.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/container/docker/handler.go @@ -261,17 +261,10 @@ func (self *dockerContainerHandler) GetStats() (*info.ContainerStats, error) { } // TODO(rjnagal): Remove the conversion when network stats are read from libcontainer. - net := stats.Network - // Ingress for host veth is from the container. - // Hence tx_bytes stat on the host veth is actually number of bytes received by the container. - stats.Network.RxBytes = net.TxBytes - stats.Network.RxPackets = net.TxPackets - stats.Network.RxErrors = net.TxErrors - stats.Network.RxDropped = net.TxDropped - stats.Network.TxBytes = net.RxBytes - stats.Network.TxPackets = net.RxPackets - stats.Network.TxErrors = net.RxErrors - stats.Network.TxDropped = net.RxDropped + convertInterfaceStats(&stats.Network.InterfaceStats) + for i := range stats.Network.Interfaces { + convertInterfaceStats(&stats.Network.Interfaces[i]) + } // Get filesystem stats. err = self.getFsStats(stats) @@ -282,6 +275,21 @@ func (self *dockerContainerHandler) GetStats() (*info.ContainerStats, error) { return stats, nil } +func convertInterfaceStats(stats *info.InterfaceStats) { + net := stats + + // Ingress for host veth is from the container. + // Hence tx_bytes stat on the host veth is actually number of bytes received by the container. + stats.RxBytes = net.TxBytes + stats.RxPackets = net.TxPackets + stats.RxErrors = net.TxErrors + stats.RxDropped = net.TxDropped + stats.TxBytes = net.RxBytes + stats.TxPackets = net.RxPackets + stats.TxErrors = net.RxErrors + stats.TxDropped = net.RxDropped +} + func (self *dockerContainerHandler) ListContainers(listType container.ListType) ([]info.ContainerReference, error) { if self.name != "/docker" { return []info.ContainerReference{}, nil diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/container/libcontainer/helpers.go b/Godeps/_workspace/src/github.com/google/cadvisor/container/libcontainer/helpers.go index 53e41af8581..bb6e9ee3091 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/container/libcontainer/helpers.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/container/libcontainer/helpers.go @@ -84,15 +84,20 @@ func GetStats(cgroupManager cgroups.Manager, networkInterfaces []string) (*info. } stats := toContainerStats(libcontainerStats) - if len(networkInterfaces) != 0 { - // ContainerStats only reports stat for one network device. - // TODO(rjnagal): Handle multiple physical network devices. - // TODO(rjnagal): Use networking stats directly from libcontainer. - stats.Network, err = sysinfo.GetNetworkStats(networkInterfaces[0]) + // TODO(rjnagal): Use networking stats directly from libcontainer. + stats.Network.Interfaces = make([]info.InterfaceStats, len(networkInterfaces)) + for i := range networkInterfaces { + interfaceStats, err := sysinfo.GetNetworkStats(networkInterfaces[i]) if err != nil { return stats, err } + stats.Network.Interfaces[i] = interfaceStats } + // For backwards compatability. + if len(networkInterfaces) > 0 { + stats.Network.InterfaceStats = stats.Network.Interfaces[0] + } + return stats, nil } @@ -213,15 +218,25 @@ func toContainerStats2(s *cgroups.Stats, ret *info.ContainerStats) { } func toContainerStats3(libcontainerStats *libcontainer.Stats, ret *info.ContainerStats) { - // TODO(vmarmol): Handle multiple interfaces. - ret.Network.RxBytes = libcontainerStats.Interfaces[0].RxBytes - ret.Network.RxPackets = libcontainerStats.Interfaces[0].RxPackets - ret.Network.RxErrors = libcontainerStats.Interfaces[0].RxErrors - ret.Network.RxDropped = libcontainerStats.Interfaces[0].RxDropped - ret.Network.TxBytes = libcontainerStats.Interfaces[0].TxBytes - ret.Network.TxPackets = libcontainerStats.Interfaces[0].TxPackets - ret.Network.TxErrors = libcontainerStats.Interfaces[0].TxErrors - ret.Network.TxDropped = libcontainerStats.Interfaces[0].TxDropped + ret.Network.Interfaces = make([]info.InterfaceStats, len(libcontainerStats.Interfaces)) + for i := range libcontainerStats.Interfaces { + ret.Network.Interfaces[i] = info.InterfaceStats{ + Name: libcontainerStats.Interfaces[i].Name, + RxBytes: libcontainerStats.Interfaces[i].RxBytes, + RxPackets: libcontainerStats.Interfaces[i].RxPackets, + RxErrors: libcontainerStats.Interfaces[i].RxErrors, + RxDropped: libcontainerStats.Interfaces[i].RxDropped, + TxBytes: libcontainerStats.Interfaces[i].TxBytes, + TxPackets: libcontainerStats.Interfaces[i].TxPackets, + TxErrors: libcontainerStats.Interfaces[i].TxErrors, + TxDropped: libcontainerStats.Interfaces[i].TxDropped, + } + } + + // Add to base struct for backwards compatability. + if len(ret.Network.Interfaces) > 0 { + ret.Network.InterfaceStats = ret.Network.Interfaces[0] + } } func toContainerStats(libcontainerStats *libcontainer.Stats) *info.ContainerStats { diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/container/raw/handler.go b/Godeps/_workspace/src/github.com/google/cadvisor/container/raw/handler.go index 160477f6d0a..33f1de677e0 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/container/raw/handler.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/container/raw/handler.go @@ -305,15 +305,13 @@ func (self *rawContainerHandler) getFsStats(stats *info.ContainerStats) error { } func (self *rawContainerHandler) GetStats() (*info.ContainerStats, error) { - var networkInterfaces []string nd, err := self.GetRootNetworkDevices() if err != nil { return new(info.ContainerStats), err } - if len(nd) != 0 { - // ContainerStats only reports stat for one network device. - // TODO(rjnagal): Handle multiple physical network devices. - networkInterfaces = []string{nd[0].Name} + networkInterfaces := make([]string, len(nd)) + for i := range nd { + networkInterfaces[i] = nd[i].Name } stats, err := libcontainer.GetStats(self.cgroupManager, networkInterfaces) if err != nil { diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/fs/fs.go b/Godeps/_workspace/src/github.com/google/cadvisor/fs/fs.go index 13a4475fce4..00c0645661f 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/fs/fs.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/fs/fs.go @@ -75,8 +75,13 @@ func NewFsInfo(context Context) (FsInfo, error) { partitions := make(map[string]partition, 0) fsInfo := &RealFsInfo{} fsInfo.labels = make(map[string]string, 0) + supportedFsType := map[string]bool{ + // all ext systems are checked through prefix. + "btrfs": true, + "xfs": true, + } for _, mount := range mounts { - if !strings.HasPrefix(mount.Fstype, "ext") && mount.Fstype != "btrfs" { + if !strings.HasPrefix(mount.Fstype, "ext") && !supportedFsType[mount.Fstype] { continue } // Avoid bind mounts. diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/info/v1/container.go b/Godeps/_workspace/src/github.com/google/cadvisor/info/v1/container.go index 0e4b89bb38e..e9afe26a713 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/info/v1/container.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/info/v1/container.go @@ -312,7 +312,9 @@ type MemoryStatsMemoryData struct { Pgmajfault uint64 `json:"pgmajfault"` } -type NetworkStats struct { +type InterfaceStats struct { + // The name of the interface. + Name string `json:"name"` // Cumulative count of bytes received. RxBytes uint64 `json:"rx_bytes"` // Cumulative count of packets received. @@ -331,6 +333,11 @@ type NetworkStats struct { TxDropped uint64 `json:"tx_dropped"` } +type NetworkStats struct { + InterfaceStats `json:",inline"` + Interfaces []InterfaceStats `json:"interfaces,omitempty"` +} + type FsStats struct { // The block device name associated with the filesystem. Device string `json:"device,omitempty"` diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/info/v2/container.go b/Godeps/_workspace/src/github.com/google/cadvisor/info/v2/container.go index 326c9ce0094..7d9c388ce11 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/info/v2/container.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/info/v2/container.go @@ -72,6 +72,11 @@ type ContainerSpec struct { HasMemory bool `json:"has_memory"` Memory MemorySpec `json:"memory,omitempty"` + + // Following resources have no associated spec, but are being isolated. + HasNetwork bool `json:"has_network"` + HasFilesystem bool `json:"has_filesystem"` + HasDiskIo bool `json:"has_diskio"` } type ContainerStats struct { @@ -87,8 +92,8 @@ type ContainerStats struct { HasMemory bool `json:"has_memory"` Memory v1.MemoryStats `json:"memory,omitempty"` // Network statistics - HasNetwork bool `json:"has_network"` - Network []v1.NetworkStats `json:"network,omitempty"` + HasNetwork bool `json:"has_network"` + Network NetworkStats `json:"network,omitempty"` // Filesystem statistics HasFilesystem bool `json:"has_filesystem"` Filesystem []v1.FsStats `json:"filesystem,omitempty"` @@ -184,3 +189,8 @@ type ProcessInfo struct { CgroupPath string `json:"cgroup_path"` Cmd string `json:"cmd"` } + +type NetworkStats struct { + // Network stats by interface. + Interfaces []v1.InterfaceStats `json:"interfaces,omitempty"` +} diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/manager/container.go b/Godeps/_workspace/src/github.com/google/cadvisor/manager/container.go index 1289f85ebda..5498c674915 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/manager/container.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/manager/container.go @@ -28,11 +28,11 @@ import ( "github.com/docker/docker/pkg/units" "github.com/golang/glog" + "github.com/google/cadvisor/cache/memory" "github.com/google/cadvisor/collector" "github.com/google/cadvisor/container" info "github.com/google/cadvisor/info/v1" "github.com/google/cadvisor/info/v2" - "github.com/google/cadvisor/storage/memory" "github.com/google/cadvisor/summary" "github.com/google/cadvisor/utils/cpuload" ) @@ -56,7 +56,7 @@ type containerInfo struct { type containerData struct { handler container.ContainerHandler info containerInfo - memoryStorage *memory.InMemoryStorage + memoryCache *memory.InMemoryCache lock sync.Mutex loadReader cpuload.CpuLoadReader summaryReader *summary.StatsSummary @@ -81,6 +81,10 @@ func (c *containerData) Start() error { } func (c *containerData) Stop() error { + err := c.memoryCache.RemoveContainer(c.info.Name) + if err != nil { + return err + } c.stop <- true return nil } @@ -132,26 +136,22 @@ func (c *containerData) getCgroupPath(cgroups string) (string, error) { return string(matches[1]), nil } -func (c *containerData) GetProcessList() ([]v2.ProcessInfo, error) { +func (c *containerData) GetProcessList(cadvisorContainer string, inHostNamespace bool) ([]v2.ProcessInfo, error) { // report all processes for root. isRoot := c.info.Name == "/" - pidMap := map[int]bool{} - if !isRoot { - pids, err := c.handler.ListProcesses(container.ListSelf) - if err != nil { - return nil, err - } - for _, pid := range pids { - pidMap[pid] = true - } - } // TODO(rjnagal): Take format as an option? format := "user,pid,ppid,stime,pcpu,pmem,rss,vsz,stat,time,comm,cgroup" - args := []string{"-e", "-o", format} + args := []string{} + command := "ps" + if !inHostNamespace { + command = "/usr/sbin/chroot" + args = append(args, "/rootfs", "ps") + } + args = append(args, "-e", "-o", format) expectedFields := 12 - out, err := exec.Command("ps", args...).Output() + out, err := exec.Command(command, args...).Output() if err != nil { - return nil, fmt.Errorf("failed to execute ps command: %v", err) + return nil, fmt.Errorf("failed to execute %q command: %v", command, err) } processes := []v2.ProcessInfo{} lines := strings.Split(string(out), "\n") @@ -187,15 +187,21 @@ func (c *containerData) GetProcessList() ([]v2.ProcessInfo, error) { if err != nil { return nil, fmt.Errorf("invalid virtual size %q: %v", fields[7], err) } + cgroup, err := c.getCgroupPath(fields[11]) + if err != nil { + return nil, fmt.Errorf("could not parse cgroup path from %q: %v", fields[10], err) + } + // Remove the ps command we just ran from cadvisor container. + // Not necessary, but makes the cadvisor page look cleaner. + if !inHostNamespace && cadvisorContainer == cgroup && fields[10] == "ps" { + continue + } var cgroupPath string if isRoot { - cgroupPath, err = c.getCgroupPath(fields[11]) - if err != nil { - return nil, fmt.Errorf("could not parse cgroup path from %q: %v", fields[10], err) - } + cgroupPath = cgroup } - if isRoot || pidMap[pid] == true { + if isRoot || c.info.Name == cgroup { processes = append(processes, v2.ProcessInfo{ User: fields[0], Pid: pid, @@ -215,8 +221,8 @@ func (c *containerData) GetProcessList() ([]v2.ProcessInfo, error) { return processes, nil } -func newContainerData(containerName string, memoryStorage *memory.InMemoryStorage, handler container.ContainerHandler, loadReader cpuload.CpuLoadReader, logUsage bool, collectorManager collector.CollectorManager) (*containerData, error) { - if memoryStorage == nil { +func newContainerData(containerName string, memoryCache *memory.InMemoryCache, handler container.ContainerHandler, loadReader cpuload.CpuLoadReader, logUsage bool, collectorManager collector.CollectorManager) (*containerData, error) { + if memoryCache == nil { return nil, fmt.Errorf("nil memory storage") } if handler == nil { @@ -229,7 +235,7 @@ func newContainerData(containerName string, memoryStorage *memory.InMemoryStorag cont := &containerData{ handler: handler, - memoryStorage: memoryStorage, + memoryCache: memoryCache, housekeepingInterval: *HousekeepingInterval, loadReader: loadReader, logUsage: logUsage, @@ -256,7 +262,7 @@ func newContainerData(containerName string, memoryStorage *memory.InMemoryStorag func (self *containerData) nextHousekeeping(lastHousekeeping time.Time) time.Time { if *allowDynamicHousekeeping { var empty time.Time - stats, err := self.memoryStorage.RecentStats(self.info.Name, empty, empty, 2) + stats, err := self.memoryCache.RecentStats(self.info.Name, empty, empty, 2) if err != nil { if self.allowErrorLogging() { glog.Warningf("Failed to get RecentStats(%q) while determining the next housekeeping: %v", self.info.Name, err) @@ -311,7 +317,7 @@ func (c *containerData) housekeeping() { if c.logUsage { const numSamples = 60 var empty time.Time - stats, err := c.memoryStorage.RecentStats(c.info.Name, empty, empty, numSamples) + stats, err := c.memoryCache.RecentStats(c.info.Name, empty, empty, numSamples) if err != nil { if c.allowErrorLogging() { glog.Infof("[%s] Failed to get recent stats for logging usage: %v", c.info.Name, err) @@ -434,7 +440,7 @@ func (c *containerData) updateStats() error { } return err } - err = c.memoryStorage.AddStats(ref, stats) + err = c.memoryCache.AddStats(ref, stats) if err != nil { return err } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/manager/container_test.go b/Godeps/_workspace/src/github.com/google/cadvisor/manager/container_test.go index bb5bbb9f16c..f332dc51674 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/manager/container_test.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/manager/container_test.go @@ -22,11 +22,11 @@ import ( "testing" "time" + "github.com/google/cadvisor/cache/memory" "github.com/google/cadvisor/collector" "github.com/google/cadvisor/container" info "github.com/google/cadvisor/info/v1" itest "github.com/google/cadvisor/info/v1/test" - "github.com/google/cadvisor/storage/memory" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -34,25 +34,25 @@ import ( const containerName = "/container" // Create a containerData instance for a test. -func setupContainerData(t *testing.T, spec info.ContainerSpec) (*containerData, *container.MockContainerHandler, *memory.InMemoryStorage) { +func setupContainerData(t *testing.T, spec info.ContainerSpec) (*containerData, *container.MockContainerHandler, *memory.InMemoryCache) { mockHandler := container.NewMockContainerHandler(containerName) mockHandler.On("GetSpec").Return( spec, nil, ) - memoryStorage := memory.New(60, nil) - ret, err := newContainerData(containerName, memoryStorage, mockHandler, nil, false, &collector.FakeCollectorManager{}) + memoryCache := memory.New(60, nil) + ret, err := newContainerData(containerName, memoryCache, mockHandler, nil, false, &collector.FakeCollectorManager{}) if err != nil { t.Fatal(err) } - return ret, mockHandler, memoryStorage + return ret, mockHandler, memoryCache } // Create a containerData instance for a test and add a default GetSpec mock. -func newTestContainerData(t *testing.T) (*containerData, *container.MockContainerHandler, *memory.InMemoryStorage) { +func newTestContainerData(t *testing.T) (*containerData, *container.MockContainerHandler, *memory.InMemoryCache) { spec := itest.GenerateRandomContainerSpec(4) - ret, mockHandler, memoryStorage := setupContainerData(t, spec) - return ret, mockHandler, memoryStorage + ret, mockHandler, memoryCache := setupContainerData(t, spec) + return ret, mockHandler, memoryCache } func TestUpdateSubcontainers(t *testing.T) { @@ -116,9 +116,9 @@ func TestUpdateSubcontainersWithErrorOnDeadContainer(t *testing.T) { mockHandler.AssertExpectations(t) } -func checkNumStats(t *testing.T, memoryStorage *memory.InMemoryStorage, numStats int) { +func checkNumStats(t *testing.T, memoryCache *memory.InMemoryCache, numStats int) { var empty time.Time - stats, err := memoryStorage.RecentStats(containerName, empty, empty, -1) + stats, err := memoryCache.RecentStats(containerName, empty, empty, -1) require.Nil(t, err) assert.Len(t, stats, numStats) } @@ -127,7 +127,7 @@ func TestUpdateStats(t *testing.T) { statsList := itest.GenerateRandomStats(1, 4, 1*time.Second) stats := statsList[0] - cd, mockHandler, memoryStorage := newTestContainerData(t) + cd, mockHandler, memoryCache := newTestContainerData(t) mockHandler.On("GetStats").Return( stats, nil, @@ -138,7 +138,7 @@ func TestUpdateStats(t *testing.T) { t.Fatal(err) } - checkNumStats(t, memoryStorage, 1) + checkNumStats(t, memoryCache, 1) mockHandler.AssertExpectations(t) } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/manager/machine.go b/Godeps/_workspace/src/github.com/google/cadvisor/manager/machine.go index ea83fa19263..cbc2f186d6a 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/manager/machine.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/manager/machine.go @@ -62,7 +62,12 @@ func getClockSpeed(procInfo []byte) (uint64, error) { // Fall back to /proc/cpuinfo matches := CpuClockSpeedMHz.FindSubmatch(procInfo) if len(matches) != 2 { - return 0, fmt.Errorf("could not detect clock speed from output: %q", string(procInfo)) + //Check if we are running on Power systems which have a different format + CpuClockSpeedMHz, _ = regexp.Compile("clock\\t*: +([0-9]+.[0-9]+)MHz") + matches = CpuClockSpeedMHz.FindSubmatch(procInfo) + if len(matches) != 2 { + return 0, fmt.Errorf("could not detect clock speed from output: %q", string(procInfo)) + } } speed, err := strconv.ParseFloat(string(matches[1]), 64) if err != nil { diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager.go b/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager.go index e5e309529ae..62255147f22 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager.go @@ -18,6 +18,7 @@ package manager import ( "flag" "fmt" + "os" "path" "regexp" "strconv" @@ -27,6 +28,7 @@ import ( "github.com/docker/libcontainer/cgroups" "github.com/golang/glog" + "github.com/google/cadvisor/cache/memory" "github.com/google/cadvisor/collector" "github.com/google/cadvisor/container" "github.com/google/cadvisor/container/docker" @@ -35,7 +37,6 @@ import ( "github.com/google/cadvisor/fs" info "github.com/google/cadvisor/info/v1" "github.com/google/cadvisor/info/v2" - "github.com/google/cadvisor/storage/memory" "github.com/google/cadvisor/utils/cpuload" "github.com/google/cadvisor/utils/oomparser" "github.com/google/cadvisor/utils/sysfs" @@ -113,8 +114,8 @@ type Manager interface { } // New takes a memory storage and returns a new manager. -func New(memoryStorage *memory.InMemoryStorage, sysfs sysfs.SysFs) (Manager, error) { - if memoryStorage == nil { +func New(memoryCache *memory.InMemoryCache, sysfs sysfs.SysFs) (Manager, error) { + if memoryCache == nil { return nil, fmt.Errorf("manager requires memory storage") } @@ -130,12 +131,20 @@ func New(memoryStorage *memory.InMemoryStorage, sysfs sysfs.SysFs) (Manager, err if err != nil { return nil, err } + + // If cAdvisor was started with host's rootfs mounted, assume that its running + // in its own namespaces. + inHostNamespace := false + if _, err := os.Stat("/rootfs/proc"); os.IsNotExist(err) { + inHostNamespace = true + } newManager := &manager{ containers: make(map[namespacedContainerName]*containerData), quitChannels: make([]chan error, 0, 2), - memoryStorage: memoryStorage, + memoryCache: memoryCache, fsInfo: fsInfo, cadvisorContainer: selfContainer, + inHostNamespace: inHostNamespace, startupTime: time.Now(), } @@ -169,12 +178,13 @@ type namespacedContainerName struct { type manager struct { containers map[namespacedContainerName]*containerData containersLock sync.RWMutex - memoryStorage *memory.InMemoryStorage + memoryCache *memory.InMemoryCache fsInfo fs.FsInfo machineInfo info.MachineInfo versionInfo info.VersionInfo quitChannels []chan error cadvisorContainer string + inHostNamespace bool dockerContainersRegexp *regexp.Regexp loadReader cpuload.CpuLoadReader eventHandler events.EventManager @@ -217,7 +227,7 @@ func (self *manager) Start() error { // Watch for OOMs. err = self.watchForNewOoms() if err != nil { - glog.Errorf("Failed to start OOM watcher, will not get OOM events: %v", err) + glog.Warningf("Could not configure a source for OOM detection, disabling OOM events: %v", err) } // If there are no factories, don't start any housekeeping and serve the information we do have. @@ -361,9 +371,12 @@ func (self *manager) GetContainerSpec(containerName string, options v2.RequestOp func (self *manager) getV2Spec(cinfo *containerInfo) v2.ContainerSpec { specV1 := self.getAdjustedSpec(cinfo) specV2 := v2.ContainerSpec{ - CreationTime: specV1.CreationTime, - HasCpu: specV1.HasCpu, - HasMemory: specV1.HasMemory, + CreationTime: specV1.CreationTime, + HasCpu: specV1.HasCpu, + HasMemory: specV1.HasMemory, + HasFilesystem: specV1.HasFilesystem, + HasNetwork: specV1.HasNetwork, + HasDiskIo: specV1.HasDiskIo, } if specV1.HasCpu { specV2.Cpu.Limit = specV1.Cpu.Limit @@ -409,7 +422,7 @@ func (self *manager) containerDataToContainerInfo(cont *containerData, query *in return nil, err } - stats, err := self.memoryStorage.RecentStats(cinfo.Name, query.Start, query.End, query.NumStats) + stats, err := self.memoryCache.RecentStats(cinfo.Name, query.Start, query.End, query.NumStats) if err != nil { return nil, err } @@ -594,7 +607,7 @@ func (self *manager) getRequestedContainers(containerName string, options v2.Req func (self *manager) GetFsInfo(label string) ([]v2.FsInfo, error) { var empty time.Time // Get latest data from filesystems hanging off root container. - stats, err := self.memoryStorage.RecentStats("/", empty, empty, 1) + stats, err := self.memoryCache.RecentStats("/", empty, empty, 1) if err != nil { return nil, err } @@ -668,7 +681,7 @@ func (m *manager) GetProcessList(containerName string, options v2.RequestOptions // TODO(rjnagal): handle count? Only if we can do count by type (eg. top 5 cpu users) ps := []v2.ProcessInfo{} for _, cont := range conts { - ps, err = cont.GetProcessList() + ps, err = cont.GetProcessList(m.cadvisorContainer, m.inHostNamespace) if err != nil { return nil, err } @@ -693,7 +706,7 @@ func (m *manager) createContainer(containerName string) error { return err } logUsage := *logCadvisorUsage && containerName == m.cadvisorContainer - cont, err := newContainerData(containerName, m.memoryStorage, handler, m.loadReader, logUsage, collectorManager) + cont, err := newContainerData(containerName, m.memoryCache, handler, m.loadReader, logUsage, collectorManager) if err != nil { return err } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager_test.go b/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager_test.go index 89cfe7aa679..6cfdc6373f3 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager_test.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/manager/manager_test.go @@ -22,19 +22,19 @@ import ( "testing" "time" + "github.com/google/cadvisor/cache/memory" "github.com/google/cadvisor/collector" "github.com/google/cadvisor/container" "github.com/google/cadvisor/container/docker" info "github.com/google/cadvisor/info/v1" itest "github.com/google/cadvisor/info/v1/test" - "github.com/google/cadvisor/storage/memory" "github.com/google/cadvisor/utils/sysfs/fakesysfs" ) // TODO(vmarmol): Refactor these tests. func createManagerAndAddContainers( - memoryStorage *memory.InMemoryStorage, + memoryCache *memory.InMemoryCache, sysfs *fakesysfs.FakeSysFs, containers []string, f func(*container.MockContainerHandler), @@ -42,9 +42,9 @@ func createManagerAndAddContainers( ) *manager { container.ClearContainerHandlerFactories() mif := &manager{ - containers: make(map[namespacedContainerName]*containerData), - quitChannels: make([]chan error, 0, 2), - memoryStorage: memoryStorage, + containers: make(map[namespacedContainerName]*containerData), + quitChannels: make([]chan error, 0, 2), + memoryCache: memoryCache, } for _, name := range containers { mockHandler := container.NewMockContainerHandler(name) @@ -53,7 +53,7 @@ func createManagerAndAddContainers( spec, nil, ).Once() - cont, err := newContainerData(name, memoryStorage, mockHandler, nil, false, &collector.FakeCollectorManager{}) + cont, err := newContainerData(name, memoryCache, mockHandler, nil, false, &collector.FakeCollectorManager{}) if err != nil { t.Fatal(err) } @@ -82,10 +82,10 @@ func expectManagerWithContainers(containers []string, query *info.ContainerInfoR infosMap[container] = itest.GenerateRandomContainerInfo(container, 4, query, 1*time.Second) } - memoryStorage := memory.New(time.Duration(query.NumStats)*time.Second, nil) + memoryCache := memory.New(time.Duration(query.NumStats)*time.Second, nil) sysfs := &fakesysfs.FakeSysFs{} m := createManagerAndAddContainers( - memoryStorage, + memoryCache, sysfs, containers, func(h *container.MockContainerHandler) { @@ -95,7 +95,7 @@ func expectManagerWithContainers(containers []string, query *info.ContainerInfoR t.Error(err) } for _, stat := range cinfo.Stats { - err = memoryStorage.AddStats(ref, stat) + err = memoryCache.AddStats(ref, stat) if err != nil { t.Error(err) } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/metrics/prometheus_test.go b/Godeps/_workspace/src/github.com/google/cadvisor/metrics/prometheus_test.go index ac701891014..3efbe043cc7 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/metrics/prometheus_test.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/metrics/prometheus_test.go @@ -57,14 +57,17 @@ func (p testSubcontainersInfoProvider) SubcontainersInfo(string, *info.Container }, }, Network: info.NetworkStats{ - RxBytes: 14, - RxPackets: 15, - RxErrors: 16, - RxDropped: 17, - TxBytes: 18, - TxPackets: 19, - TxErrors: 20, - TxDropped: 21, + InterfaceStats: info.InterfaceStats{ + Name: "eth0", + RxBytes: 14, + RxPackets: 15, + RxErrors: 16, + RxDropped: 17, + TxBytes: 18, + TxPackets: 19, + TxErrors: 20, + TxDropped: 21, + }, }, Filesystem: []info.FsStats{ { diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/pages/containers_html.go b/Godeps/_workspace/src/github.com/google/cadvisor/pages/containers_html.go index 41af3f95c58..abc4ea2898a 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/pages/containers_html.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/pages/containers_html.go @@ -192,6 +192,16 @@ const containersHtmlTemplate = `

Network

+
+ +

Throughput

diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/containers_js.go b/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/containers_js.go index 945450a62a2..e8d237f8ba2 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/containers_js.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/containers_js.go @@ -375,12 +375,32 @@ function drawMemoryUsage(elementId, machineInfo, containerInfo) { drawLineChart(titles, data, elementId, "Megabytes"); } +// Get the index of the interface with the specified name. +function getNetworkInterfaceIndex(interfaceName, interfaces) { + for (var i = 0; i < interfaces.length; i++) { + if (interfaces[i].name == interfaceName) { + return i; + } + } + return -1; +} + // Draw the graph for network tx/rx bytes. function drawNetworkBytes(elementId, machineInfo, stats) { if (stats.spec.has_network && !hasResource(stats, "network")) { return; } + // Get interface index. + var interfaceIndex = -1; + if (stats.stats.length > 0) { + interfaceIndex = getNetworkInterfaceIndex(window.cadvisor.network.interface, stats.stats[0].network.interfaces); + } + if (interfaceIndex < 0) { + console.log("Unable to find interface\"", interfaceName, "\" in ", stats.stats.network); + return; + } + var titles = ["Time", "Tx bytes", "Rx bytes"]; var data = []; for (var i = 1; i < stats.stats.length; i++) { @@ -390,8 +410,8 @@ function drawNetworkBytes(elementId, machineInfo, stats) { var elements = []; elements.push(cur.timestamp); - elements.push((cur.network.tx_bytes - prev.network.tx_bytes) / intervalInSec); - elements.push((cur.network.rx_bytes - prev.network.rx_bytes) / intervalInSec); + elements.push((cur.network.interfaces[interfaceIndex].tx_bytes - prev.network.interfaces[interfaceIndex].tx_bytes) / intervalInSec); + elements.push((cur.network.interfaces[interfaceIndex].rx_bytes - prev.network.interfaces[interfaceIndex].rx_bytes) / intervalInSec); data.push(elements); } drawLineChart(titles, data, elementId, "Bytes per second"); @@ -403,6 +423,16 @@ function drawNetworkErrors(elementId, machineInfo, stats) { return; } + // Get interface index. + var interfaceIndex = -1; + if (stats.stats.length > 0) { + interfaceIndex = getNetworkInterfaceIndex(window.cadvisor.network.interface, stats.stats[0].network.interfaces); + } + if (interfaceIndex < 0) { + console.log("Unable to find interface\"", interfaceName, "\" in ", stats.stats.network); + return; + } + var titles = ["Time", "Tx", "Rx"]; var data = []; for (var i = 1; i < stats.stats.length; i++) { @@ -412,8 +442,8 @@ function drawNetworkErrors(elementId, machineInfo, stats) { var elements = []; elements.push(cur.timestamp); - elements.push((cur.network.tx_errors - prev.network.tx_errors) / intervalInSec); - elements.push((cur.network.rx_errors - prev.network.rx_errors) / intervalInSec); + elements.push((cur.network.interfaces[interfaceIndex].tx_errors - prev.network.interfaces[interfaceIndex].tx_errors) / intervalInSec); + elements.push((cur.network.interfaces[interfaceIndex].rx_errors - prev.network.interfaces[interfaceIndex].rx_errors) / intervalInSec); data.push(elements); } drawLineChart(titles, data, elementId, "Errors per second"); @@ -478,7 +508,7 @@ function drawProcesses(isRoot, rootDir, processInfo) { var titleTypes = ['string', 'number', 'number', 'string', 'number', 'number', 'number', 'number', 'string', 'string', 'string']; var sortIndex = 4 if (isRoot) { - titles.push("Cgroup"); + titles.push("Container"); titleTypes.push('string'); } var data = [] @@ -618,6 +648,60 @@ function drawCharts(machineInfo, containerInfo) { stepExecute(steps); } +function setNetwork(interfaceName) { + $("#network-selection-text") + .empty() + .append($("").text("Interface: ")) + .append($("").text(interfaceName)); + window.cadvisor.network.interface = interfaceName; + + // Draw the new stats. + refreshStats(); +} + +// Creates the network selection dropdown. +function startNetwork(selectionElement, containerInfo) { + if (!hasResource(containerInfo, "network") || containerInfo.stats.length == 0 + || !containerInfo.stats[0].network.interfaces || containerInfo.stats[0].network.interfaces.length == 0) { + return; + } + + window.cadvisor.network = {}; + window.cadvisor.network.interface = ""; + + // Add all interfaces to the dropdown. + var el = $("#" + selectionElement); + for (var i = 0; i < containerInfo.stats[0].network.interfaces.length; i++) { + var interfaceName = containerInfo.stats[0].network.interfaces[i].name; + el.append($("
  • ") + .attr("role", "presentation") + .append($("") + .attr("role", "menuitem") + .attr("tabindex", -1) + .click(setNetwork.bind(null, interfaceName)) + .text(interfaceName))); + } + setNetwork(containerInfo.stats[0].network.interfaces[0].name); +} + +// Refresh the stats on the page. +function refreshStats() { + var machineInfo = window.cadvisor.machineInfo; + getStats(window.cadvisor.rootDir, window.cadvisor.containerName, function(containerInfo){ + if (window.cadvisor.firstRun) { + window.cadvisor.firstRun = false; + + if (containerInfo.spec.has_filesystem) { + startFileSystemUsage("filesystem-usage", machineInfo, containerInfo); + } + if (containerInfo.spec.has_network) { + startNetwork("network-selection", containerInfo); + } + } + drawCharts(machineInfo, containerInfo); + }); +} + // Executed when the page finishes loading. function startPage(containerName, hasCpu, hasMemory, rootDir, isRoot) { // Don't fetch data if we don't have any resource. @@ -628,6 +712,8 @@ function startPage(containerName, hasCpu, hasMemory, rootDir, isRoot) { window.charts = {}; window.cadvisor = {}; window.cadvisor.firstRun = true; + window.cadvisor.rootDir = rootDir; + window.cadvisor.containerName = containerName; // Draw process information at start and refresh every 60s. getProcessInfo(rootDir, containerName, function(processInfo) { @@ -641,15 +727,9 @@ function startPage(containerName, hasCpu, hasMemory, rootDir, isRoot) { // Get machine info, then get the stats every 1s. getMachineInfo(rootDir, function(machineInfo) { + window.cadvisor.machineInfo = machineInfo; setInterval(function() { - getStats(rootDir, containerName, function(containerInfo){ - if (window.cadvisor.firstRun && containerInfo.spec.has_filesystem) { - window.cadvisor.firstRun = false; - startFileSystemUsage("filesystem-usage", machineInfo, containerInfo); - } - - drawCharts(machineInfo, containerInfo); - }); + refreshStats(); }, 1000); }); } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/static.go b/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/static.go index 96f2513a289..a942e0e124c 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/static.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/pages/static/static.go @@ -18,8 +18,10 @@ package static import ( "fmt" + "mime" "net/http" "net/url" + "path" ) const StaticResource = "/static/" @@ -46,6 +48,12 @@ func HandleRequest(w http.ResponseWriter, u *url.URL) error { return fmt.Errorf("unknown static resource %q", resource) } + // Set Content-Type if we were able to detect it. + contentType := mime.TypeByExtension(path.Ext(resource)) + if contentType != "" { + w.Header().Set("Content-Type", contentType) + } + _, err := w.Write([]byte(content)) return err } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/bigquery.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/bigquery.go index 5f5761efd85..9f65f99ecf0 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/bigquery.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/bigquery.go @@ -15,10 +15,6 @@ package bigquery import ( - "fmt" - "strconv" - "time" - bigquery "code.google.com/p/google-api-go-client/bigquery/v2" info "github.com/google/cadvisor/info/v1" "github.com/google/cadvisor/storage" @@ -248,135 +244,6 @@ func (self *bigqueryStorage) containerFilesystemStatsToRows( return rows } -func convertToUint64(v interface{}) (uint64, error) { - if v == nil { - return 0, nil - } - switch x := v.(type) { - case uint64: - return x, nil - case int: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case int32: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case int64: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case float64: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case uint32: - return uint64(x), nil - case string: - return strconv.ParseUint(x, 10, 64) - } - - return 0, fmt.Errorf("unknown type") -} - -func (self *bigqueryStorage) valuesToContainerStats(columns []string, values []interface{}) (*info.ContainerStats, error) { - stats := &info.ContainerStats{ - Filesystem: make([]info.FsStats, 0), - } - var err error - for i, col := range columns { - v := values[i] - switch { - case col == colTimestamp: - if t, ok := v.(time.Time); ok { - stats.Timestamp = t - } - case col == colMachineName: - if m, ok := v.(string); ok { - if m != self.machineName { - return nil, fmt.Errorf("different machine") - } - } else { - return nil, fmt.Errorf("machine name field is not a string: %v", v) - } - // Cumulative Cpu Usage - case col == colCpuCumulativeUsage: - stats.Cpu.Usage.Total, err = convertToUint64(v) - // Cumulative Cpu used by the system - case col == colCpuCumulativeUsageSystem: - stats.Cpu.Usage.System, err = convertToUint64(v) - // Cumulative Cpu Usage in user mode - case col == colCpuCumulativeUsageUser: - stats.Cpu.Usage.User, err = convertToUint64(v) - // Memory Usage - case col == colMemoryUsage: - stats.Memory.Usage, err = convertToUint64(v) - // Working set size - case col == colMemoryWorkingSet: - stats.Memory.WorkingSet, err = convertToUint64(v) - // container page fault - case col == colMemoryContainerPgfault: - stats.Memory.ContainerData.Pgfault, err = convertToUint64(v) - // container major page fault - case col == colMemoryContainerPgmajfault: - stats.Memory.ContainerData.Pgmajfault, err = convertToUint64(v) - // hierarchical page fault - case col == colMemoryHierarchicalPgfault: - stats.Memory.HierarchicalData.Pgfault, err = convertToUint64(v) - // hierarchical major page fault - case col == colMemoryHierarchicalPgmajfault: - stats.Memory.HierarchicalData.Pgmajfault, err = convertToUint64(v) - case col == colRxBytes: - stats.Network.RxBytes, err = convertToUint64(v) - case col == colRxErrors: - stats.Network.RxErrors, err = convertToUint64(v) - case col == colTxBytes: - stats.Network.TxBytes, err = convertToUint64(v) - case col == colTxErrors: - stats.Network.TxErrors, err = convertToUint64(v) - case col == colFsDevice: - device, ok := v.(string) - if !ok { - return nil, fmt.Errorf("filesystem name field is not a string: %+v", v) - } - if len(stats.Filesystem) == 0 { - stats.Filesystem = append(stats.Filesystem, info.FsStats{Device: device}) - } else { - stats.Filesystem[0].Device = device - } - case col == colFsLimit: - limit, err := convertToUint64(v) - if err != nil { - return nil, fmt.Errorf("filesystem limit field %+v invalid: %s", v, err) - } - if len(stats.Filesystem) == 0 { - stats.Filesystem = append(stats.Filesystem, info.FsStats{Limit: limit}) - } else { - stats.Filesystem[0].Limit = limit - } - case col == colFsUsage: - usage, err := convertToUint64(v) - if err != nil { - return nil, fmt.Errorf("filesystem usage field %+v invalid: %s", v, err) - } - if len(stats.Filesystem) == 0 { - stats.Filesystem = append(stats.Filesystem, info.FsStats{Usage: usage}) - } else { - stats.Filesystem[0].Usage = usage - } - } - if err != nil { - return nil, fmt.Errorf("column %v has invalid value %v: %v", col, v, err) - } - } - return stats, nil -} - func (self *bigqueryStorage) AddStats(ref info.ContainerReference, stats *info.ContainerStats) error { if stats == nil { return nil @@ -393,42 +260,6 @@ func (self *bigqueryStorage) AddStats(ref info.ContainerReference, stats *info.C return nil } -func (self *bigqueryStorage) getRecentRows(containerName string, numRows int) ([]string, [][]interface{}, error) { - tableName, err := self.client.GetTableName() - if err != nil { - return nil, nil, err - } - - query := fmt.Sprintf("SELECT * FROM %v WHERE %v='%v' and %v='%v'", tableName, colContainerName, containerName, colMachineName, self.machineName) - if numRows > 0 { - query = fmt.Sprintf("%v LIMIT %v", query, numRows) - } - - return self.client.Query(query) -} - -func (self *bigqueryStorage) RecentStats(containerName string, numStats int) ([]*info.ContainerStats, error) { - if numStats == 0 { - return nil, nil - } - header, rows, err := self.getRecentRows(containerName, numStats) - if err != nil { - return nil, err - } - statsList := make([]*info.ContainerStats, 0, len(rows)) - for _, row := range rows { - stats, err := self.valuesToContainerStats(header, row) - if err != nil { - return nil, err - } - if stats == nil { - continue - } - statsList = append(statsList, stats) - } - return statsList, nil -} - func (self *bigqueryStorage) Close() error { self.client.Close() self.client = nil diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/client.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/client.go index 4187db7d09e..af7736b5654 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/client.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/client.go @@ -232,56 +232,3 @@ func (c *Client) InsertRow(rowData map[string]interface{}) error { } return nil } - -// Returns a bigtable table name (format: datasetID.tableID) -func (c *Client) GetTableName() (string, error) { - if c.service == nil || c.datasetId == "" || c.tableId == "" { - return "", fmt.Errorf("table not setup") - } - return fmt.Sprintf("%s.%s", c.datasetId, c.tableId), nil -} - -// Do a synchronous query on bigtable and return a header and data rows. -// Number of rows are capped to queryLimit. -func (c *Client) Query(query string) ([]string, [][]interface{}, error) { - service, err := c.getService() - if err != nil { - return nil, nil, err - } - datasetRef := &bigquery.DatasetReference{ - DatasetId: c.datasetId, - ProjectId: *projectId, - } - - queryRequest := &bigquery.QueryRequest{ - DefaultDataset: datasetRef, - MaxResults: queryLimit, - Kind: "json", - Query: query, - } - - results, err := service.Jobs.Query(*projectId, queryRequest).Do() - if err != nil { - return nil, nil, err - } - numRows := results.TotalRows - if numRows < 1 { - return nil, nil, fmt.Errorf("query returned no data") - } - - headers := []string{} - for _, col := range results.Schema.Fields { - headers = append(headers, col.Name) - } - - rows := [][]interface{}{} - numColumns := len(results.Schema.Fields) - for _, data := range results.Rows { - row := make([]interface{}, numColumns) - for c := 0; c < numColumns; c++ { - row[c] = data.F[c].V - } - rows = append(rows, row) - } - return headers, rows, nil -} diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/example/example.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/example/example.go index 08eaffd30ba..f21ad0b7a65 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/example/example.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/bigquery/client/example/example.go @@ -84,25 +84,4 @@ func main() { panic(err) } } - - // Query - tableName, err := c.GetTableName() - if err != nil { - fmt.Printf("table not set") - panic(err) - } - - query := "SELECT * FROM " + tableName + " ORDER BY Timestamp LIMIT 100" - header, rows, err := c.Query(query) - if err != nil { - fmt.Printf("Failed query") - panic(err) - } - fmt.Printf("Headers: %v", header) - for _, row := range rows { - for i, val := range row { - fmt.Printf("%s:%v ", header[i], val) - } - fmt.Printf("\n") - } } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb.go index 00aafcd87fe..3723c031c11 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb.go @@ -139,114 +139,6 @@ func (self *influxdbStorage) containerStatsToValues( return columns, values } -func convertToUint64(v interface{}) (uint64, error) { - if v == nil { - return 0, nil - } - switch x := v.(type) { - case uint64: - return x, nil - case int: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case int32: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case int64: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case float64: - if x < 0 { - return 0, fmt.Errorf("negative value: %v", x) - } - return uint64(x), nil - case uint32: - return uint64(x), nil - } - return 0, fmt.Errorf("unknown type") -} - -func (self *influxdbStorage) valuesToContainerStats(columns []string, values []interface{}) (*info.ContainerStats, error) { - stats := &info.ContainerStats{ - Filesystem: make([]info.FsStats, 0), - } - var err error - for i, col := range columns { - v := values[i] - switch { - case col == colTimestamp: - if f64sec, ok := v.(float64); ok && stats.Timestamp.IsZero() { - stats.Timestamp = time.Unix(int64(f64sec)/1E3, (int64(f64sec)%1E3)*1E6) - } - case col == colMachineName: - if m, ok := v.(string); ok { - if m != self.machineName { - return nil, fmt.Errorf("different machine") - } - } else { - return nil, fmt.Errorf("machine name field is not a string: %v", v) - } - // Cumulative Cpu Usage - case col == colCpuCumulativeUsage: - stats.Cpu.Usage.Total, err = convertToUint64(v) - // Memory Usage - case col == colMemoryUsage: - stats.Memory.Usage, err = convertToUint64(v) - // Working set size - case col == colMemoryWorkingSet: - stats.Memory.WorkingSet, err = convertToUint64(v) - case col == colRxBytes: - stats.Network.RxBytes, err = convertToUint64(v) - case col == colRxErrors: - stats.Network.RxErrors, err = convertToUint64(v) - case col == colTxBytes: - stats.Network.TxBytes, err = convertToUint64(v) - case col == colTxErrors: - stats.Network.TxErrors, err = convertToUint64(v) - case col == colFsDevice: - device, ok := v.(string) - if !ok { - return nil, fmt.Errorf("filesystem name field is not a string: %+v", v) - } - if len(stats.Filesystem) == 0 { - stats.Filesystem = append(stats.Filesystem, info.FsStats{Device: device}) - } else { - stats.Filesystem[0].Device = device - } - case col == colFsLimit: - limit, err := convertToUint64(v) - if err != nil { - return nil, fmt.Errorf("filesystem limit field %+v invalid: %s", v, err) - } - if len(stats.Filesystem) == 0 { - stats.Filesystem = append(stats.Filesystem, info.FsStats{Limit: limit}) - } else { - stats.Filesystem[0].Limit = limit - } - case col == colFsUsage: - usage, err := convertToUint64(v) - if err != nil { - return nil, fmt.Errorf("filesystem usage field %+v invalid: %s", v, err) - } - if len(stats.Filesystem) == 0 { - stats.Filesystem = append(stats.Filesystem, info.FsStats{Usage: usage}) - } else { - stats.Filesystem[0].Usage = usage - } - } - if err != nil { - return nil, fmt.Errorf("column %v has invalid value %v: %v", col, v, err) - } - } - return stats, nil -} - func (self *influxdbStorage) OverrideReadyToFlush(readyToFlush func() bool) { self.readyToFlush = readyToFlush } @@ -283,42 +175,6 @@ func (self *influxdbStorage) AddStats(ref info.ContainerReference, stats *info.C return nil } -func (self *influxdbStorage) RecentStats(containerName string, numStats int) ([]*info.ContainerStats, error) { - if numStats == 0 { - return nil, nil - } - // TODO(dengnan): select only columns that we need - // TODO(dengnan): escape names - query := fmt.Sprintf("select * from %v where %v='%v' and %v='%v'", self.tableName, colContainerName, containerName, colMachineName, self.machineName) - if numStats > 0 { - query = fmt.Sprintf("%v limit %v", query, numStats) - } - series, err := self.client.Query(query) - if err != nil { - return nil, err - } - statsList := make([]*info.ContainerStats, 0, len(series)) - // By default, influxDB returns data in time descending order. - // RecentStats() requires stats in time increasing order, - // so we need to go through from the last one to the first one. - for i := len(series) - 1; i >= 0; i-- { - s := series[i] - - for j := len(s.Points) - 1; j >= 0; j-- { - values := s.Points[j] - stats, err := self.valuesToContainerStats(s.Columns, values) - if err != nil { - return nil, err - } - if stats == nil { - continue - } - statsList = append(statsList, stats) - } - } - return statsList, nil -} - func (self *influxdbStorage) Close() error { self.client = nil return nil diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb_test.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb_test.go index 63a7dd4b506..d7261be79d7 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb_test.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/influxdb/influxdb_test.go @@ -51,7 +51,7 @@ func (self *influxDbTestStorageDriver) AddStats(ref info.ContainerReference, sta } func (self *influxDbTestStorageDriver) RecentStats(containerName string, numStats int) ([]*info.ContainerStats, error) { - return self.base.RecentStats(containerName, numStats) + return nil, nil } func (self *influxDbTestStorageDriver) Percentiles(containerName string, cpuUsagePercentiles []int, memUsagePercentiles []int) (*info.ContainerStatsPercentiles, error) { diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/redis/redis.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/redis/redis.go index e4c8fd58a0a..5d1e4ce480f 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/redis/redis.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/redis/redis.go @@ -89,12 +89,6 @@ func (self *redisStorage) AddStats(ref info.ContainerReference, stats *info.Cont return nil } -// We just need to push the data to the redis, do not need to pull from the redis, -//so we do not override RecentStats() -func (self *redisStorage) RecentStats(containerName string, numStats int) ([]*info.ContainerStats, error) { - return nil, nil -} - func (self *redisStorage) Close() error { return self.conn.Close() } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/statsd/client.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/statsd/client.go new file mode 100644 index 00000000000..ffef57ff469 --- /dev/null +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/statsd/client.go @@ -0,0 +1,73 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package statsd + +import ( + "fmt" + "net" + + "github.com/golang/glog" +) + +type Client struct { + HostPort string + conn net.Conn +} + +func (self *Client) Open() error { + conn, err := net.Dial("udp", self.HostPort) + if err != nil { + glog.Errorf("failed to open udp connection to %q: %v", self.HostPort, err) + return err + } + self.conn = conn + return nil +} + +func (self *Client) Close() { + self.conn.Close() +} + +func (self *Client) UpdateGauge(name, value string) error { + stats := make(map[string]string) + val := fmt.Sprintf("%s|g", value) + stats[name] = val + if err := self.send(stats); err != nil { + return err + } + return nil +} + +// Simple send to statsd daemon without sampling. +func (self *Client) send(data map[string]string) error { + for k, v := range data { + formatted := fmt.Sprintf("%s:%s", k, v) + _, err := fmt.Fprintf(self.conn, formatted) + if err != nil { + glog.V(3).Infof("failed to send data %q: %v", formatted, err) + // return on first error. + return err + } + } + return nil +} + +func New(hostPort string) (*Client, error) { + client := Client{HostPort: hostPort} + if err := client.Open(); err != nil { + return nil, err + } + return &client, nil +} diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/storage.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/storage.go index 3404b9a14e7..a079ebdd483 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/storage.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/storage.go @@ -19,13 +19,6 @@ import info "github.com/google/cadvisor/info/v1" type StorageDriver interface { AddStats(ref info.ContainerReference, stats *info.ContainerStats) error - // Read most recent stats. numStats indicates max number of stats - // returned. The returned stats must be consecutive observed stats. If - // numStats < 0, then return all stats stored in the storage. The - // returned stats should be sorted in time increasing order, i.e. Most - // recent stats should be the last. - RecentStats(containerName string, numStats int) ([]*info.ContainerStats, error) - // Close will clear the state of the storage driver. The elements // stored in the underlying storage may or may not be deleted depending // on the implementation of the storage driver. diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/mock.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/mock.go index f29bbdfb903..f5ed73c174a 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/mock.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/mock.go @@ -29,11 +29,6 @@ func (self *MockStorageDriver) AddStats(ref info.ContainerReference, stats *info return args.Error(0) } -func (self *MockStorageDriver) RecentStats(containerName string, numStats int) ([]*info.ContainerStats, error) { - args := self.Called(containerName, numStats) - return args.Get(0).([]*info.ContainerStats), args.Error(1) -} - func (self *MockStorageDriver) Close() error { if self.MockCloseMethod { args := self.Called() diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/storagetests.go b/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/storagetests.go index bbaba0bba2c..db218e40038 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/storagetests.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/storage/test/storagetests.go @@ -147,126 +147,3 @@ func StorageDriverFillRandomStatsFunc( } } } - -func StorageDriverTestRetrievePartialRecentStats(driver TestStorageDriver, t *testing.T) { - defer driver.Close() - N := 100 - memTrace := make([]uint64, N) - cpuTrace := make([]uint64, N) - for i := 0; i < N; i++ { - memTrace[i] = uint64(i + 1) - cpuTrace[i] = uint64(1) - } - - ref := info.ContainerReference{ - Name: "container", - } - - trace := buildTrace(cpuTrace, memTrace, 1*time.Second) - - for _, stats := range trace { - driver.AddStats(ref, stats) - } - - recentStats, err := driver.RecentStats(ref.Name, 10) - if err != nil { - t.Fatal(err) - } - if len(recentStats) == 0 { - t.Fatal("should at least store one stats") - } - - if len(recentStats) > 10 { - t.Fatalf("returned %v stats, not 10.", len(recentStats)) - } - - actualRecentStats := trace[len(trace)-len(recentStats):] - - // The returned stats should be sorted in time increasing order - for i, s := range actualRecentStats { - r := recentStats[i] - if !driver.StatsEq(s, r) { - t.Errorf("unexpected stats %+v with memory usage %v; should be %+v", r, r.Memory.Usage, s) - } - } -} - -func StorageDriverTestRetrieveAllRecentStats(driver TestStorageDriver, t *testing.T) { - defer driver.Close() - N := 100 - memTrace := make([]uint64, N) - cpuTrace := make([]uint64, N) - for i := 0; i < N; i++ { - memTrace[i] = uint64(i + 1) - cpuTrace[i] = uint64(1) - } - - ref := info.ContainerReference{ - Name: "container", - } - - trace := buildTrace(cpuTrace, memTrace, 1*time.Second) - - for _, stats := range trace { - driver.AddStats(ref, stats) - } - - recentStats, err := driver.RecentStats(ref.Name, -1) - if err != nil { - t.Fatal(err) - } - if len(recentStats) == 0 { - t.Fatal("should at least store one stats") - } - if len(recentStats) > N { - t.Fatalf("returned %v stats, not %d.", len(recentStats), N) - } - - actualRecentStats := trace[len(trace)-len(recentStats):] - - // The returned stats should be sorted in time increasing order - for i, s := range actualRecentStats { - r := recentStats[i] - if !driver.StatsEq(s, r) { - t.Errorf("unexpected stats %+v with memory usage %v", r, r.Memory.Usage) - } - } -} - -func StorageDriverTestNoRecentStats(driver TestStorageDriver, t *testing.T) { - defer driver.Close() - nonExistContainer := "somerandomecontainer" - stats, _ := driver.RecentStats(nonExistContainer, -1) - if len(stats) > 0 { - t.Errorf("RecentStats() returns %v stats on non exist container", len(stats)) - } -} - -func StorageDriverTestRetrieveZeroRecentStats(driver TestStorageDriver, t *testing.T) { - defer driver.Close() - N := 100 - memTrace := make([]uint64, N) - cpuTrace := make([]uint64, N) - for i := 0; i < N; i++ { - memTrace[i] = uint64(i + 1) - cpuTrace[i] = uint64(1) - } - - ref := info.ContainerReference{ - Name: "container", - } - - trace := buildTrace(cpuTrace, memTrace, 1*time.Second) - - for _, stats := range trace { - driver.AddStats(ref, stats) - } - - recentStats, err := driver.RecentStats(ref.Name, 0) - if err != nil { - t.Fatal(err) - } - if len(recentStats) > 0 { - t.Errorf("RecentStats() returns %v stats when requests for 0 stats", len(recentStats)) - } -} diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/summary/buffer.go b/Godeps/_workspace/src/github.com/google/cadvisor/summary/buffer.go index fd1f87a5c14..6cf5841c80e 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/summary/buffer.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/summary/buffer.go @@ -19,7 +19,7 @@ import ( ) // Manages a buffer of usage samples. -// This is similar to stats buffer in storage/memory. +// This is similar to stats buffer in cache/memory. // The main difference is that we do not pre-allocate the buffer as most containers // won't live that long. type SamplesBuffer struct { diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysfs/sysfs.go b/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysfs/sysfs.go index d33b9d0091f..f1568b66829 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysfs/sysfs.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysfs/sysfs.go @@ -24,10 +24,11 @@ import ( ) const ( - blockDir = "/sys/block" - cacheDir = "/sys/devices/system/cpu/cpu" - netDir = "/sys/class/net" - dmiDir = "/sys/class/dmi" + blockDir = "/sys/block" + cacheDir = "/sys/devices/system/cpu/cpu" + netDir = "/sys/class/net" + dmiDir = "/sys/class/dmi" + ppcDevTree = "/proc/device-tree" ) type CacheInfo struct { @@ -235,7 +236,15 @@ func (self *realSysFs) GetCacheInfo(id int, name string) (CacheInfo, error) { func (self *realSysFs) GetSystemUUID() (string, error) { id, err := ioutil.ReadFile(path.Join(dmiDir, "id", "product_uuid")) if err != nil { - return "", err + //If running on baremetal Power then UID is /proc/device-tree/system-id + id, err = ioutil.ReadFile(path.Join(ppcDevTree, "system-id")) + if err != nil { + //If running on a KVM guest on Power then UUID is /proc/device-tree/vm,uuid + id, err = ioutil.ReadFile(path.Join(ppcDevTree, "vm,uuid")) + if err != nil { + return "", err + } + } } return strings.TrimSpace(string(id)), nil } diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo.go b/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo.go index 9d6a6208d88..27017389e9f 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo.go @@ -157,19 +157,19 @@ func GetCacheInfo(sysFs sysfs.SysFs, id int) ([]sysfs.CacheInfo, error) { return info, nil } -func GetNetworkStats(name string) (info.NetworkStats, error) { - stats := info.NetworkStats{} +func GetNetworkStats(name string) (info.InterfaceStats, error) { // TODO(rjnagal): Take syfs as an argument. sysFs, err := sysfs.NewRealSysFs() if err != nil { - return stats, err + return info.InterfaceStats{}, err } return getNetworkStats(name, sysFs) } -func getNetworkStats(name string, sysFs sysfs.SysFs) (info.NetworkStats, error) { - stats := info.NetworkStats{} +func getNetworkStats(name string, sysFs sysfs.SysFs) (info.InterfaceStats, error) { + var stats info.InterfaceStats var err error + stats.Name = name stats.RxBytes, err = sysFs.GetNetworkStatValue(name, "rx_bytes") if err != nil { return stats, err diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo_test.go b/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo_test.go index f46a0c14f9d..97df16b9c99 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo_test.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/utils/sysinfo/sysinfo_test.go @@ -110,7 +110,8 @@ func TestGetCacheInfo(t *testing.T) { } func TestGetNetworkStats(t *testing.T) { - expected_stats := info.NetworkStats{ + expected_stats := info.InterfaceStats{ + Name: "eth0", RxBytes: 1024, RxPackets: 1024, RxErrors: 1024, diff --git a/Godeps/_workspace/src/github.com/google/cadvisor/version/version.go b/Godeps/_workspace/src/github.com/google/cadvisor/version/version.go index 58e2e35953f..5ea76cfcd30 100644 --- a/Godeps/_workspace/src/github.com/google/cadvisor/version/version.go +++ b/Godeps/_workspace/src/github.com/google/cadvisor/version/version.go @@ -15,4 +15,4 @@ package version // Version of cAdvisor. -const VERSION = "0.14.0" +const VERSION = "0.15.1" diff --git a/Godeps/_workspace/src/google.golang.org/appengine/.travis.yml b/Godeps/_workspace/src/google.golang.org/appengine/.travis.yml deleted file mode 100644 index bfa8658a41a..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go - -go: - - 1.4 - -install: - - export GOPATH="$HOME/gopath" - - mkdir -p "$GOPATH/src/google.golang.org" - - mv "$TRAVIS_BUILD_DIR" "$GOPATH/src/google.golang.org/appengine" - - go get -v -t -d google.golang.org/appengine/... - -script: - - go test -v google.golang.org/appengine/... - - go test -v -race google.golang.org/appengine/... diff --git a/Godeps/_workspace/src/google.golang.org/appengine/LICENSE b/Godeps/_workspace/src/google.golang.org/appengine/LICENSE deleted file mode 100644 index d6456956733..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/Godeps/_workspace/src/google.golang.org/appengine/README.md b/Godeps/_workspace/src/google.golang.org/appengine/README.md deleted file mode 100644 index 06d1e60bf72..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Go App Engine for Managed VMs - -[![Build Status](https://travis-ci.org/golang/appengine.svg)](https://travis-ci.org/golang/appengine) - -This repository supports the Go runtime for Managed VMs on App Engine. -It provides APIs for interacting with App Engine services. -Its canonical import path is `google.golang.org/appengine`. - -See https://cloud.google.com/appengine/docs/go/managed-vms/ -for more information. - -## Directory structure -The top level directory of this repository is the `appengine` package. It -contains the -basic types (e.g. `appengine.Context`) that are used across APIs. Specific API -packages are in subdirectories (e.g. `datastore`). - -There is an `internal` subdirectory that contains service protocol buffers, -plus packages required for connectivity to make API calls. App Engine apps -should not directly import any package under `internal`. - -## Updating a Go App Engine app - -This section describes how to update a traditional Go App Engine app to run on Managed VMs. - -### 1. Update YAML files - -The `app.yaml` file (and YAML files for modules) should have these new lines added: -``` -vm: true -manual_scaling: - instances: 1 -``` -See https://cloud.google.com/appengine/docs/go/modules/#Go_Instance_scaling_and_class for details. - -### 2. Update import paths - -The import paths for App Engine packages are now fully qualified, based at `google.golang.org/appengine`. -You will need to update your code to use import paths starting with that; for instance, -code importing `appengine/datastore` will now need to import `google.golang.org/appengine/datastore`. -You can do that manually, or by running this command to recursively update all Go source files in the current directory: -(may require GNU sed) -``` -sed -i '/"appengine/{s,"appengine,"google.golang.org/appengine,;s,appengine_,appengine/,}' \ - $(find . -name '*.go') -``` - -### 3. Update code using deprecated, removed or modified APIs - -Most App Engine services are available with exactly the same API. -A few APIs were cleaned up, and some are not available yet. -This list summarises the differences: - -* `appengine.Datacenter` now takes an `appengine.Context` argument. -* `datastore.PropertyLoadSaver` has been simplified to use slices in place of channels. -* `search.FieldLoadSaver` now handles document metadata. -* `taskqueue.QueueStats` no longer takes a maxTasks argument. That argument has been - deprecated and unused for a long time. -* `appengine/aetest`, `appengine/blobstore`, `appengine/cloudsql` - and `appengine/runtime` have not been ported yet. -* `appengine.BackendHostname` and `appengine.BackendInstance` were for the deprecated backends feature. - Use `appengine.ModuleHostname`and `appengine.ModuleName` instead. -* `appengine.IsCapabilityDisabled` and `appengine/capability` are obsolete. -* Most of `appengine/file` is deprecated. Use [Google Cloud Storage](https://godoc.org/google.golang.org/cloud/storage) instead. -* `appengine/socket` is deprecated. Use the standard `net` package instead. diff --git a/Godeps/_workspace/src/google.golang.org/appengine/appengine.go b/Godeps/_workspace/src/google.golang.org/appengine/appengine.go deleted file mode 100644 index df263b59cff..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/appengine.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package appengine provides basic functionality for Google App Engine. -// -// For more information on how to write Go apps for Google App Engine, see: -// https://cloud.google.com/appengine/docs/go/ -package appengine - -import ( - "net/http" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal" -) - -// IsDevAppServer reports whether the App Engine app is running in the -// development App Server. -func IsDevAppServer() bool { - // TODO(dsymonds): Detect this. - return false -} - -// Context represents the context of an in-flight HTTP request. -type Context interface { - // Debugf formats its arguments according to the format, analogous to fmt.Printf, - // and records the text as a log message at Debug level. - Debugf(format string, args ...interface{}) - - // Infof is like Debugf, but at Info level. - Infof(format string, args ...interface{}) - - // Warningf is like Debugf, but at Warning level. - Warningf(format string, args ...interface{}) - - // Errorf is like Debugf, but at Error level. - Errorf(format string, args ...interface{}) - - // Criticalf is like Debugf, but at Critical level. - Criticalf(format string, args ...interface{}) - - // The remaining methods are for internal use only. - // Developer-facing APIs wrap these methods to provide a more friendly API. - - // Internal use only. - Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error - // Internal use only. Use AppID instead. - FullyQualifiedAppID() string - // Internal use only. - Request() interface{} -} - -// NewContext returns a context for an in-flight HTTP request. -// Repeated calls will return the same value. -func NewContext(req *http.Request) Context { - return internal.NewContext(req) -} - -// TODO(dsymonds): Add BackgroundContext function? - -// BlobKey is a key for a blobstore blob. -// -// Conceptually, this type belongs in the blobstore package, but it lives in -// the appengine package to avoid a circular dependency: blobstore depends on -// datastore, and datastore needs to refer to the BlobKey type. -type BlobKey string - -// GeoPoint represents a location as latitude/longitude in degrees. -type GeoPoint struct { - Lat, Lng float64 -} - -// Valid returns whether a GeoPoint is within [-90, 90] latitude and [-180, 180] longitude. -func (g GeoPoint) Valid() bool { - return -90 <= g.Lat && g.Lat <= 90 && -180 <= g.Lng && g.Lng <= 180 -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/appengine_test.go b/Godeps/_workspace/src/google.golang.org/appengine/appengine_test.go deleted file mode 100644 index e1cfb82cce0..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/appengine_test.go +++ /dev/null @@ -1,45 +0,0 @@ -package appengine - -import ( - "testing" -) - -func TestValidGeoPoint(t *testing.T) { - testCases := []struct { - desc string - pt GeoPoint - want bool - }{ - { - "valid", - GeoPoint{67.21, 13.37}, - true, - }, - { - "high lat", - GeoPoint{-90.01, 13.37}, - false, - }, - { - "low lat", - GeoPoint{90.01, 13.37}, - false, - }, - { - "high lng", - GeoPoint{67.21, 182}, - false, - }, - { - "low lng", - GeoPoint{67.21, -181}, - false, - }, - } - - for _, tc := range testCases { - if got := tc.pt.Valid(); got != tc.want { - t.Errorf("%s: got %v, want %v", tc.desc, got, tc.want) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/channel/channel.go b/Godeps/_workspace/src/google.golang.org/appengine/channel/channel.go deleted file mode 100644 index 6b7e77947b0..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/channel/channel.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package channel implements the server side of App Engine's Channel API. - -Create creates a new channel associated with the given clientID, -which must be unique to the client that will use the returned token. - - token, err := channel.Create(c, "player1") - if err != nil { - // handle error - } - // return token to the client in an HTTP response - -Send sends a message to the client over the channel identified by clientID. - - channel.Send(c, "player1", "Game over!") -*/ -package channel - -import ( - "encoding/json" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - basepb "google.golang.org/appengine/internal/base" - pb "google.golang.org/appengine/internal/channel" -) - -// Create creates a channel and returns a token for use by the client. -// The clientID is an application-provided string used to identify the client. -func Create(c appengine.Context, clientID string) (token string, err error) { - req := &pb.CreateChannelRequest{ - ApplicationKey: &clientID, - } - resp := &pb.CreateChannelResponse{} - err = c.Call(service, "CreateChannel", req, resp, nil) - token = resp.GetToken() - return token, remapError(err) -} - -// Send sends a message on the channel associated with clientID. -func Send(c appengine.Context, clientID, message string) error { - req := &pb.SendMessageRequest{ - ApplicationKey: &clientID, - Message: &message, - } - resp := &basepb.VoidProto{} - return remapError(c.Call(service, "SendChannelMessage", req, resp, nil)) -} - -// SendJSON is a helper function that sends a JSON-encoded value -// on the channel associated with clientID. -func SendJSON(c appengine.Context, clientID string, value interface{}) error { - m, err := json.Marshal(value) - if err != nil { - return err - } - return Send(c, clientID, string(m)) -} - -// remapError fixes any APIError referencing "xmpp" into one referencing "channel". -func remapError(err error) error { - if e, ok := err.(*internal.APIError); ok { - if e.Service == "xmpp" { - e.Service = "channel" - } - } - return err -} - -var service = "xmpp" // prod - -func init() { - if appengine.IsDevAppServer() { - service = "channel" // dev - } - internal.RegisterErrorCodeMap("channel", pb.ChannelServiceError_ErrorCode_name) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/channel/channel_test.go b/Godeps/_workspace/src/google.golang.org/appengine/channel/channel_test.go deleted file mode 100644 index d04733798ce..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/channel/channel_test.go +++ /dev/null @@ -1,17 +0,0 @@ -package channel - -import ( - "testing" - - "google.golang.org/appengine/internal" -) - -func TestRemapError(t *testing.T) { - err := &internal.APIError{ - Service: "xmpp", - } - err = remapError(err).(*internal.APIError) - if err.Service != "channel" { - t.Errorf("err.Service = %q, want %q", err.Service, "channel") - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore.go deleted file mode 100644 index e29b96db649..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore.go +++ /dev/null @@ -1,405 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "errors" - "fmt" - "reflect" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/datastore" -) - -var ( - // ErrInvalidEntityType is returned when functions like Get or Next are - // passed a dst or src argument of invalid type. - ErrInvalidEntityType = errors.New("datastore: invalid entity type") - // ErrInvalidKey is returned when an invalid key is presented. - ErrInvalidKey = errors.New("datastore: invalid key") - // ErrNoSuchEntity is returned when no entity was found for a given key. - ErrNoSuchEntity = errors.New("datastore: no such entity") -) - -// ErrFieldMismatch is returned when a field is to be loaded into a different -// type than the one it was stored from, or when a field is missing or -// unexported in the destination struct. -// StructType is the type of the struct pointed to by the destination argument -// passed to Get or to Iterator.Next. -type ErrFieldMismatch struct { - StructType reflect.Type - FieldName string - Reason string -} - -func (e *ErrFieldMismatch) Error() string { - return fmt.Sprintf("datastore: cannot load field %q into a %q: %s", - e.FieldName, e.StructType, e.Reason) -} - -// protoToKey converts a Reference proto to a *Key. -func protoToKey(r *pb.Reference) (k *Key, err error) { - appID := r.GetApp() - namespace := r.GetNameSpace() - for _, e := range r.Path.Element { - k = &Key{ - kind: e.GetType(), - stringID: e.GetName(), - intID: e.GetId(), - parent: k, - appID: appID, - namespace: namespace, - } - if !k.valid() { - return nil, ErrInvalidKey - } - } - return -} - -// keyToProto converts a *Key to a Reference proto. -func keyToProto(defaultAppID string, k *Key) *pb.Reference { - appID := k.appID - if appID == "" { - appID = defaultAppID - } - n := 0 - for i := k; i != nil; i = i.parent { - n++ - } - e := make([]*pb.Path_Element, n) - for i := k; i != nil; i = i.parent { - n-- - e[n] = &pb.Path_Element{ - Type: &i.kind, - } - // At most one of {Name,Id} should be set. - // Neither will be set for incomplete keys. - if i.stringID != "" { - e[n].Name = &i.stringID - } else if i.intID != 0 { - e[n].Id = &i.intID - } - } - var namespace *string - if k.namespace != "" { - namespace = proto.String(k.namespace) - } - return &pb.Reference{ - App: proto.String(appID), - NameSpace: namespace, - Path: &pb.Path{ - Element: e, - }, - } -} - -// multiKeyToProto is a batch version of keyToProto. -func multiKeyToProto(appID string, key []*Key) []*pb.Reference { - ret := make([]*pb.Reference, len(key)) - for i, k := range key { - ret[i] = keyToProto(appID, k) - } - return ret -} - -// multiValid is a batch version of Key.valid. It returns an error, not a -// []bool. -func multiValid(key []*Key) error { - invalid := false - for _, k := range key { - if !k.valid() { - invalid = true - break - } - } - if !invalid { - return nil - } - err := make(appengine.MultiError, len(key)) - for i, k := range key { - if !k.valid() { - err[i] = ErrInvalidKey - } - } - return err -} - -// It's unfortunate that the two semantically equivalent concepts pb.Reference -// and pb.PropertyValue_ReferenceValue aren't the same type. For example, the -// two have different protobuf field numbers. - -// referenceValueToKey is the same as protoToKey except the input is a -// PropertyValue_ReferenceValue instead of a Reference. -func referenceValueToKey(r *pb.PropertyValue_ReferenceValue) (k *Key, err error) { - appID := r.GetApp() - namespace := r.GetNameSpace() - for _, e := range r.Pathelement { - k = &Key{ - kind: e.GetType(), - stringID: e.GetName(), - intID: e.GetId(), - parent: k, - appID: appID, - namespace: namespace, - } - if !k.valid() { - return nil, ErrInvalidKey - } - } - return -} - -// keyToReferenceValue is the same as keyToProto except the output is a -// PropertyValue_ReferenceValue instead of a Reference. -func keyToReferenceValue(defaultAppID string, k *Key) *pb.PropertyValue_ReferenceValue { - ref := keyToProto(defaultAppID, k) - pe := make([]*pb.PropertyValue_ReferenceValue_PathElement, len(ref.Path.Element)) - for i, e := range ref.Path.Element { - pe[i] = &pb.PropertyValue_ReferenceValue_PathElement{ - Type: e.Type, - Id: e.Id, - Name: e.Name, - } - } - return &pb.PropertyValue_ReferenceValue{ - App: ref.App, - NameSpace: ref.NameSpace, - Pathelement: pe, - } -} - -type multiArgType int - -const ( - multiArgTypeInvalid multiArgType = iota - multiArgTypePropertyLoadSaver - multiArgTypeStruct - multiArgTypeStructPtr - multiArgTypeInterface -) - -// checkMultiArg checks that v has type []S, []*S, []I, or []P, for some struct -// type S, for some interface type I, or some non-interface non-pointer type P -// such that P or *P implements PropertyLoadSaver. -// -// It returns what category the slice's elements are, and the reflect.Type -// that represents S, I or P. -// -// As a special case, PropertyList is an invalid type for v. -func checkMultiArg(v reflect.Value) (m multiArgType, elemType reflect.Type) { - if v.Kind() != reflect.Slice { - return multiArgTypeInvalid, nil - } - if v.Type() == typeOfPropertyList { - return multiArgTypeInvalid, nil - } - elemType = v.Type().Elem() - if reflect.PtrTo(elemType).Implements(typeOfPropertyLoadSaver) { - return multiArgTypePropertyLoadSaver, elemType - } - switch elemType.Kind() { - case reflect.Struct: - return multiArgTypeStruct, elemType - case reflect.Interface: - return multiArgTypeInterface, elemType - case reflect.Ptr: - elemType = elemType.Elem() - if elemType.Kind() == reflect.Struct { - return multiArgTypeStructPtr, elemType - } - } - return multiArgTypeInvalid, nil -} - -// Get loads the entity stored for k into dst, which must be a struct pointer -// or implement PropertyLoadSaver. If there is no such entity for the key, Get -// returns ErrNoSuchEntity. -// -// The values of dst's unmatched struct fields are not modified, and matching -// slice-typed fields are not reset before appending to them. In particular, it -// is recommended to pass a pointer to a zero valued struct on each Get call. -// -// ErrFieldMismatch is returned when a field is to be loaded into a different -// type than the one it was stored from, or when a field is missing or -// unexported in the destination struct. ErrFieldMismatch is only returned if -// dst is a struct pointer. -func Get(c appengine.Context, key *Key, dst interface{}) error { - if dst == nil { // GetMulti catches nil interface; we need to catch nil ptr here - return ErrInvalidEntityType - } - err := GetMulti(c, []*Key{key}, []interface{}{dst}) - if me, ok := err.(appengine.MultiError); ok { - return me[0] - } - return err -} - -// GetMulti is a batch version of Get. -// -// dst must be a []S, []*S, []I or []P, for some struct type S, some interface -// type I, or some non-interface non-pointer type P such that P or *P -// implements PropertyLoadSaver. If an []I, each element must be a valid dst -// for Get: it must be a struct pointer or implement PropertyLoadSaver. -// -// As a special case, PropertyList is an invalid type for dst, even though a -// PropertyList is a slice of structs. It is treated as invalid to avoid being -// mistakenly passed when []PropertyList was intended. -func GetMulti(c appengine.Context, key []*Key, dst interface{}) error { - v := reflect.ValueOf(dst) - multiArgType, _ := checkMultiArg(v) - if multiArgType == multiArgTypeInvalid { - return errors.New("datastore: dst has invalid type") - } - if len(key) != v.Len() { - return errors.New("datastore: key and dst slices have different length") - } - if len(key) == 0 { - return nil - } - if err := multiValid(key); err != nil { - return err - } - req := &pb.GetRequest{ - Key: multiKeyToProto(c.FullyQualifiedAppID(), key), - } - res := &pb.GetResponse{} - if err := c.Call("datastore_v3", "Get", req, res, nil); err != nil { - return err - } - if len(key) != len(res.Entity) { - return errors.New("datastore: internal error: server returned the wrong number of entities") - } - multiErr, any := make(appengine.MultiError, len(key)), false - for i, e := range res.Entity { - if e.Entity == nil { - multiErr[i] = ErrNoSuchEntity - } else { - elem := v.Index(i) - if multiArgType == multiArgTypePropertyLoadSaver || multiArgType == multiArgTypeStruct { - elem = elem.Addr() - } - if multiArgType == multiArgTypeStructPtr && elem.IsNil() { - elem.Set(reflect.New(elem.Type().Elem())) - } - multiErr[i] = loadEntity(elem.Interface(), e.Entity) - } - if multiErr[i] != nil { - any = true - } - } - if any { - return multiErr - } - return nil -} - -// Put saves the entity src into the datastore with key k. src must be a struct -// pointer or implement PropertyLoadSaver; if a struct pointer then any -// unexported fields of that struct will be skipped. If k is an incomplete key, -// the returned key will be a unique key generated by the datastore. -func Put(c appengine.Context, key *Key, src interface{}) (*Key, error) { - k, err := PutMulti(c, []*Key{key}, []interface{}{src}) - if err != nil { - if me, ok := err.(appengine.MultiError); ok { - return nil, me[0] - } - return nil, err - } - return k[0], nil -} - -// PutMulti is a batch version of Put. -// -// src must satisfy the same conditions as the dst argument to GetMulti. -func PutMulti(c appengine.Context, key []*Key, src interface{}) ([]*Key, error) { - v := reflect.ValueOf(src) - multiArgType, _ := checkMultiArg(v) - if multiArgType == multiArgTypeInvalid { - return nil, errors.New("datastore: src has invalid type") - } - if len(key) != v.Len() { - return nil, errors.New("datastore: key and src slices have different length") - } - if len(key) == 0 { - return nil, nil - } - appID := c.FullyQualifiedAppID() - if err := multiValid(key); err != nil { - return nil, err - } - req := &pb.PutRequest{} - for i := range key { - elem := v.Index(i) - if multiArgType == multiArgTypePropertyLoadSaver || multiArgType == multiArgTypeStruct { - elem = elem.Addr() - } - sProto, err := saveEntity(appID, key[i], elem.Interface()) - if err != nil { - return nil, err - } - req.Entity = append(req.Entity, sProto) - } - res := &pb.PutResponse{} - if err := c.Call("datastore_v3", "Put", req, res, nil); err != nil { - return nil, err - } - if len(key) != len(res.Key) { - return nil, errors.New("datastore: internal error: server returned the wrong number of keys") - } - ret := make([]*Key, len(key)) - for i := range ret { - var err error - ret[i], err = protoToKey(res.Key[i]) - if err != nil || ret[i].Incomplete() { - return nil, errors.New("datastore: internal error: server returned an invalid key") - } - } - return ret, nil -} - -// Delete deletes the entity for the given key. -func Delete(c appengine.Context, key *Key) error { - err := DeleteMulti(c, []*Key{key}) - if me, ok := err.(appengine.MultiError); ok { - return me[0] - } - return err -} - -// DeleteMulti is a batch version of Delete. -func DeleteMulti(c appengine.Context, key []*Key) error { - if len(key) == 0 { - return nil - } - if err := multiValid(key); err != nil { - return err - } - req := &pb.DeleteRequest{ - Key: multiKeyToProto(c.FullyQualifiedAppID(), key), - } - res := &pb.DeleteResponse{} - return c.Call("datastore_v3", "Delete", req, res, nil) -} - -func namespaceMod(m proto.Message, namespace string) { - // pb.Query is the only type that has a name_space field. - // All other namespace support in datastore is in the keys. - switch m := m.(type) { - case *pb.Query: - if m.NameSpace == nil { - m.NameSpace = &namespace - } - } -} - -func init() { - internal.NamespaceMods["datastore_v3"] = namespaceMod - internal.RegisterErrorCodeMap("datastore_v3", pb.Error_ErrorCode_name) - internal.RegisterTimeoutErrorCode("datastore_v3", int32(pb.Error_TIMEOUT)) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore_test.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore_test.go deleted file mode 100644 index 593f9fac7d8..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/datastore_test.go +++ /dev/null @@ -1,1499 +0,0 @@ -// Copyright 2011 Google Inc. All Rights Reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "encoding/json" - "errors" - "fmt" - "reflect" - "strings" - "testing" - "time" - - "google.golang.org/appengine" - pb "google.golang.org/appengine/internal/datastore" -) - -const testAppID = "testApp" - -type ( - myBlob []byte - myByte byte - myString string -) - -func makeMyByteSlice(n int) []myByte { - b := make([]myByte, n) - for i := range b { - b[i] = myByte(i) - } - return b -} - -func makeInt8Slice(n int) []int8 { - b := make([]int8, n) - for i := range b { - b[i] = int8(i) - } - return b -} - -func makeUint8Slice(n int) []uint8 { - b := make([]uint8, n) - for i := range b { - b[i] = uint8(i) - } - return b -} - -func newKey(stringID string, parent *Key) *Key { - return &Key{ - kind: "kind", - stringID: stringID, - intID: 0, - parent: parent, - appID: testAppID, - } -} - -var ( - testKey0 = newKey("name0", nil) - testKey1a = newKey("name1", nil) - testKey1b = newKey("name1", nil) - testKey2a = newKey("name2", testKey0) - testKey2b = newKey("name2", testKey0) - testGeoPt0 = appengine.GeoPoint{Lat: 1.2, Lng: 3.4} - testGeoPt1 = appengine.GeoPoint{Lat: 5, Lng: 10} - testBadGeoPt = appengine.GeoPoint{Lat: 1000, Lng: 34} -) - -type B0 struct { - B []byte -} - -type B1 struct { - B []int8 -} - -type B2 struct { - B myBlob -} - -type B3 struct { - B []myByte -} - -type B4 struct { - B [][]byte -} - -type B5 struct { - B ByteString -} - -type C0 struct { - I int - C chan int -} - -type C1 struct { - I int - C *chan int -} - -type C2 struct { - I int - C []chan int -} - -type C3 struct { - C string -} - -type E struct{} - -type G0 struct { - G appengine.GeoPoint -} - -type G1 struct { - G []appengine.GeoPoint -} - -type K0 struct { - K *Key -} - -type K1 struct { - K []*Key -} - -type N0 struct { - X0 - Nonymous X0 - Ignore string `datastore:"-"` - Other string -} - -type N1 struct { - X0 - Nonymous []X0 - Ignore string `datastore:"-"` - Other string -} - -type N2 struct { - N1 `datastore:"red"` - Green N1 `datastore:"green"` - Blue N1 - White N1 `datastore:"-"` -} - -type O0 struct { - I int64 -} - -type O1 struct { - I int32 -} - -type U0 struct { - U uint -} - -type U1 struct { - U string -} - -type T struct { - T time.Time -} - -type X0 struct { - S string - I int - i int -} - -type X1 struct { - S myString - I int32 - J int64 -} - -type X2 struct { - Z string - i int -} - -type X3 struct { - S bool - I int -} - -type Y0 struct { - B bool - F []float64 - G []float64 -} - -type Y1 struct { - B bool - F float64 -} - -type Y2 struct { - B bool - F []int64 -} - -type Tagged struct { - A int `datastore:"a,noindex"` - B []int `datastore:"b"` - C int `datastore:",noindex"` - D int `datastore:""` - E int - I int `datastore:"-"` - J int `datastore:",noindex" json:"j"` - - Y0 `datastore:"-"` - Z chan int `datastore:"-,"` -} - -type InvalidTagged1 struct { - I int `datastore:"\t"` -} - -type InvalidTagged2 struct { - I int - J int `datastore:"I"` -} - -type Inner1 struct { - W int32 - X string -} - -type Inner2 struct { - Y float64 -} - -type Inner3 struct { - Z bool -} - -type Outer struct { - A int16 - I []Inner1 - J Inner2 - Inner3 -} - -type OuterEquivalent struct { - A int16 - IDotW []int32 `datastore:"I.W"` - IDotX []string `datastore:"I.X"` - JDotY float64 `datastore:"J.Y"` - Z bool -} - -type Dotted struct { - A DottedA `datastore:"A0.A1.A2"` -} - -type DottedA struct { - B DottedB `datastore:"B3"` -} - -type DottedB struct { - C int `datastore:"C4.C5"` -} - -type SliceOfSlices struct { - I int - S []struct { - J int - F []float64 - } -} - -type Recursive struct { - I int - R []Recursive -} - -type MutuallyRecursive0 struct { - I int - R []MutuallyRecursive1 -} - -type MutuallyRecursive1 struct { - I int - R []MutuallyRecursive0 -} - -type Doubler struct { - S string - I int64 - B bool -} - -func (d *Doubler) Load(props []Property) error { - return LoadStruct(d, props) -} - -func (d *Doubler) Save() ([]Property, error) { - // Save the default Property slice to an in-memory buffer (a PropertyList). - props, err := SaveStruct(d) - if err != nil { - return nil, err - } - var list PropertyList - if err := list.Load(props); err != nil { - return nil, err - } - - // Edit that PropertyList, and send it on. - for i := range list { - switch v := list[i].Value.(type) { - case string: - // + means string concatenation. - list[i].Value = v + v - case int64: - // + means integer addition. - list[i].Value = v + v - } - } - return list.Save() -} - -var _ PropertyLoadSaver = (*Doubler)(nil) - -type Deriver struct { - S, Derived, Ignored string -} - -func (e *Deriver) Load(props []Property) error { - for _, p := range props { - if p.Name != "S" { - continue - } - e.S = p.Value.(string) - e.Derived = "derived+" + e.S - } - return nil -} - -func (e *Deriver) Save() ([]Property, error) { - return []Property{ - { - Name: "S", - Value: e.S, - }, - }, nil -} - -var _ PropertyLoadSaver = (*Deriver)(nil) - -type BadMultiPropEntity struct{} - -func (e *BadMultiPropEntity) Load(props []Property) error { - return errors.New("unimplemented") -} - -func (e *BadMultiPropEntity) Save() ([]Property, error) { - // Write multiple properties with the same name "I", but Multiple is false. - var props []Property - for i := 0; i < 3; i++ { - props = append(props, Property{ - Name: "I", - Value: int64(i), - }) - } - return props, nil -} - -var _ PropertyLoadSaver = (*BadMultiPropEntity)(nil) - -type BK struct { - Key appengine.BlobKey -} - -type testCase struct { - desc string - src interface{} - want interface{} - putErr string - getErr string -} - -var testCases = []testCase{ - { - "chan save fails", - &C0{I: -1}, - &E{}, - "unsupported struct field", - "", - }, - { - "*chan save fails", - &C1{I: -1}, - &E{}, - "unsupported struct field", - "", - }, - { - "[]chan save fails", - &C2{I: -1, C: make([]chan int, 8)}, - &E{}, - "unsupported struct field", - "", - }, - { - "chan load fails", - &C3{C: "not a chan"}, - &C0{}, - "", - "type mismatch", - }, - { - "*chan load fails", - &C3{C: "not a *chan"}, - &C1{}, - "", - "type mismatch", - }, - { - "[]chan load fails", - &C3{C: "not a []chan"}, - &C2{}, - "", - "type mismatch", - }, - { - "empty struct", - &E{}, - &E{}, - "", - "", - }, - { - "geopoint", - &G0{G: testGeoPt0}, - &G0{G: testGeoPt0}, - "", - "", - }, - { - "geopoint invalid", - &G0{G: testBadGeoPt}, - &G0{}, - "invalid GeoPoint value", - "", - }, - { - "geopoint as props", - &G0{G: testGeoPt0}, - &PropertyList{ - Property{Name: "G", Value: testGeoPt0, NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "geopoint slice", - &G1{G: []appengine.GeoPoint{testGeoPt0, testGeoPt1}}, - &G1{G: []appengine.GeoPoint{testGeoPt0, testGeoPt1}}, - "", - "", - }, - { - "key", - &K0{K: testKey1a}, - &K0{K: testKey1b}, - "", - "", - }, - { - "key with parent", - &K0{K: testKey2a}, - &K0{K: testKey2b}, - "", - "", - }, - { - "nil key", - &K0{}, - &K0{}, - "", - "", - }, - { - "all nil keys in slice", - &K1{[]*Key{nil, nil}}, - &K1{[]*Key{nil, nil}}, - "", - "", - }, - { - "some nil keys in slice", - &K1{[]*Key{testKey1a, nil, testKey2a}}, - &K1{[]*Key{testKey1b, nil, testKey2b}}, - "", - "", - }, - { - "overflow", - &O0{I: 1 << 48}, - &O1{}, - "", - "overflow", - }, - { - "time", - &T{T: time.Unix(1e9, 0)}, - &T{T: time.Unix(1e9, 0)}, - "", - "", - }, - { - "time as props", - &T{T: time.Unix(1e9, 0)}, - &PropertyList{ - Property{Name: "T", Value: time.Unix(1e9, 0), NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "uint save", - &U0{U: 1}, - &U0{}, - "unsupported struct field", - "", - }, - { - "uint load", - &U1{U: "not a uint"}, - &U0{}, - "", - "type mismatch", - }, - { - "zero", - &X0{}, - &X0{}, - "", - "", - }, - { - "basic", - &X0{S: "one", I: 2, i: 3}, - &X0{S: "one", I: 2}, - "", - "", - }, - { - "save string/int load myString/int32", - &X0{S: "one", I: 2, i: 3}, - &X1{S: "one", I: 2}, - "", - "", - }, - { - "missing fields", - &X0{S: "one", I: 2, i: 3}, - &X2{}, - "", - "no such struct field", - }, - { - "save string load bool", - &X0{S: "one", I: 2, i: 3}, - &X3{I: 2}, - "", - "type mismatch", - }, - { - "basic slice", - &Y0{B: true, F: []float64{7, 8, 9}}, - &Y0{B: true, F: []float64{7, 8, 9}}, - "", - "", - }, - { - "save []float64 load float64", - &Y0{B: true, F: []float64{7, 8, 9}}, - &Y1{B: true}, - "", - "requires a slice", - }, - { - "save []float64 load []int64", - &Y0{B: true, F: []float64{7, 8, 9}}, - &Y2{B: true}, - "", - "type mismatch", - }, - { - "single slice is too long", - &Y0{F: make([]float64, maxIndexedProperties+1)}, - &Y0{}, - "too many indexed properties", - "", - }, - { - "two slices are too long", - &Y0{F: make([]float64, maxIndexedProperties), G: make([]float64, maxIndexedProperties)}, - &Y0{}, - "too many indexed properties", - "", - }, - { - "one slice and one scalar are too long", - &Y0{F: make([]float64, maxIndexedProperties), B: true}, - &Y0{}, - "too many indexed properties", - "", - }, - { - "long blob", - &B0{B: makeUint8Slice(maxIndexedProperties + 1)}, - &B0{B: makeUint8Slice(maxIndexedProperties + 1)}, - "", - "", - }, - { - "long []int8 is too long", - &B1{B: makeInt8Slice(maxIndexedProperties + 1)}, - &B1{}, - "too many indexed properties", - "", - }, - { - "short []int8", - &B1{B: makeInt8Slice(3)}, - &B1{B: makeInt8Slice(3)}, - "", - "", - }, - { - "long myBlob", - &B2{B: makeUint8Slice(maxIndexedProperties + 1)}, - &B2{B: makeUint8Slice(maxIndexedProperties + 1)}, - "", - "", - }, - { - "short myBlob", - &B2{B: makeUint8Slice(3)}, - &B2{B: makeUint8Slice(3)}, - "", - "", - }, - { - "long []myByte", - &B3{B: makeMyByteSlice(maxIndexedProperties + 1)}, - &B3{B: makeMyByteSlice(maxIndexedProperties + 1)}, - "", - "", - }, - { - "short []myByte", - &B3{B: makeMyByteSlice(3)}, - &B3{B: makeMyByteSlice(3)}, - "", - "", - }, - { - "slice of blobs", - &B4{B: [][]byte{ - makeUint8Slice(3), - makeUint8Slice(4), - makeUint8Slice(5), - }}, - &B4{B: [][]byte{ - makeUint8Slice(3), - makeUint8Slice(4), - makeUint8Slice(5), - }}, - "", - "", - }, - { - "short ByteString", - &B5{B: ByteString(makeUint8Slice(3))}, - &B5{B: ByteString(makeUint8Slice(3))}, - "", - "", - }, - { - "short ByteString as props", - &B5{B: ByteString(makeUint8Slice(3))}, - &PropertyList{ - Property{Name: "B", Value: ByteString(makeUint8Slice(3)), NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "short ByteString into string", - &B5{B: ByteString("legacy")}, - &struct{ B string }{"legacy"}, - "", - "", - }, - { - "[]byte must be noindex", - &PropertyList{ - Property{Name: "B", Value: makeUint8Slice(3), NoIndex: false}, - }, - nil, - "cannot index a []byte valued Property", - "", - }, - { - "save tagged load props", - &Tagged{A: 1, B: []int{21, 22, 23}, C: 3, D: 4, E: 5, I: 6, J: 7}, - &PropertyList{ - // A and B are renamed to a and b; A and C are noindex, I is ignored. - // Indexed properties are loaded before raw properties. Thus, the - // result is: b, b, b, D, E, a, c. - Property{Name: "b", Value: int64(21), NoIndex: false, Multiple: true}, - Property{Name: "b", Value: int64(22), NoIndex: false, Multiple: true}, - Property{Name: "b", Value: int64(23), NoIndex: false, Multiple: true}, - Property{Name: "D", Value: int64(4), NoIndex: false, Multiple: false}, - Property{Name: "E", Value: int64(5), NoIndex: false, Multiple: false}, - Property{Name: "a", Value: int64(1), NoIndex: true, Multiple: false}, - Property{Name: "C", Value: int64(3), NoIndex: true, Multiple: false}, - Property{Name: "J", Value: int64(7), NoIndex: true, Multiple: false}, - }, - "", - "", - }, - { - "save tagged load tagged", - &Tagged{A: 1, B: []int{21, 22, 23}, C: 3, D: 4, E: 5, I: 6, J: 7}, - &Tagged{A: 1, B: []int{21, 22, 23}, C: 3, D: 4, E: 5, J: 7}, - "", - "", - }, - { - "save props load tagged", - &PropertyList{ - Property{Name: "A", Value: int64(11), NoIndex: true, Multiple: false}, - Property{Name: "a", Value: int64(12), NoIndex: true, Multiple: false}, - }, - &Tagged{A: 12}, - "", - `cannot load field "A"`, - }, - { - "invalid tagged1", - &InvalidTagged1{I: 1}, - &InvalidTagged1{}, - "struct tag has invalid property name", - "", - }, - { - "invalid tagged2", - &InvalidTagged2{I: 1, J: 2}, - &InvalidTagged2{}, - "struct tag has repeated property name", - "", - }, - { - "doubler", - &Doubler{S: "s", I: 1, B: true}, - &Doubler{S: "ss", I: 2, B: true}, - "", - "", - }, - { - "save struct load props", - &X0{S: "s", I: 1}, - &PropertyList{ - Property{Name: "S", Value: "s", NoIndex: false, Multiple: false}, - Property{Name: "I", Value: int64(1), NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "save props load struct", - &PropertyList{ - Property{Name: "S", Value: "s", NoIndex: false, Multiple: false}, - Property{Name: "I", Value: int64(1), NoIndex: false, Multiple: false}, - }, - &X0{S: "s", I: 1}, - "", - "", - }, - { - "nil-value props", - &PropertyList{ - Property{Name: "I", Value: nil, NoIndex: false, Multiple: false}, - Property{Name: "B", Value: nil, NoIndex: false, Multiple: false}, - Property{Name: "S", Value: nil, NoIndex: false, Multiple: false}, - Property{Name: "F", Value: nil, NoIndex: false, Multiple: false}, - Property{Name: "K", Value: nil, NoIndex: false, Multiple: false}, - Property{Name: "T", Value: nil, NoIndex: false, Multiple: false}, - Property{Name: "J", Value: nil, NoIndex: false, Multiple: true}, - Property{Name: "J", Value: int64(7), NoIndex: false, Multiple: true}, - Property{Name: "J", Value: nil, NoIndex: false, Multiple: true}, - }, - &struct { - I int64 - B bool - S string - F float64 - K *Key - T time.Time - J []int64 - }{ - J: []int64{0, 7, 0}, - }, - "", - "", - }, - { - "save outer load props", - &Outer{ - A: 1, - I: []Inner1{ - {10, "ten"}, - {20, "twenty"}, - {30, "thirty"}, - }, - J: Inner2{ - Y: 3.14, - }, - Inner3: Inner3{ - Z: true, - }, - }, - &PropertyList{ - Property{Name: "A", Value: int64(1), NoIndex: false, Multiple: false}, - Property{Name: "I.W", Value: int64(10), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "ten", NoIndex: false, Multiple: true}, - Property{Name: "I.W", Value: int64(20), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "twenty", NoIndex: false, Multiple: true}, - Property{Name: "I.W", Value: int64(30), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "thirty", NoIndex: false, Multiple: true}, - Property{Name: "J.Y", Value: float64(3.14), NoIndex: false, Multiple: false}, - Property{Name: "Z", Value: true, NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "save props load outer-equivalent", - &PropertyList{ - Property{Name: "A", Value: int64(1), NoIndex: false, Multiple: false}, - Property{Name: "I.W", Value: int64(10), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "ten", NoIndex: false, Multiple: true}, - Property{Name: "I.W", Value: int64(20), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "twenty", NoIndex: false, Multiple: true}, - Property{Name: "I.W", Value: int64(30), NoIndex: false, Multiple: true}, - Property{Name: "I.X", Value: "thirty", NoIndex: false, Multiple: true}, - Property{Name: "J.Y", Value: float64(3.14), NoIndex: false, Multiple: false}, - Property{Name: "Z", Value: true, NoIndex: false, Multiple: false}, - }, - &OuterEquivalent{ - A: 1, - IDotW: []int32{10, 20, 30}, - IDotX: []string{"ten", "twenty", "thirty"}, - JDotY: 3.14, - Z: true, - }, - "", - "", - }, - { - "save outer-equivalent load outer", - &OuterEquivalent{ - A: 1, - IDotW: []int32{10, 20, 30}, - IDotX: []string{"ten", "twenty", "thirty"}, - JDotY: 3.14, - Z: true, - }, - &Outer{ - A: 1, - I: []Inner1{ - {10, "ten"}, - {20, "twenty"}, - {30, "thirty"}, - }, - J: Inner2{ - Y: 3.14, - }, - Inner3: Inner3{ - Z: true, - }, - }, - "", - "", - }, - { - "dotted names save", - &Dotted{A: DottedA{B: DottedB{C: 88}}}, - &PropertyList{ - Property{Name: "A0.A1.A2.B3.C4.C5", Value: int64(88), NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "dotted names load", - &PropertyList{ - Property{Name: "A0.A1.A2.B3.C4.C5", Value: int64(99), NoIndex: false, Multiple: false}, - }, - &Dotted{A: DottedA{B: DottedB{C: 99}}}, - "", - "", - }, - { - "save struct load deriver", - &X0{S: "s", I: 1}, - &Deriver{S: "s", Derived: "derived+s"}, - "", - "", - }, - { - "save deriver load struct", - &Deriver{S: "s", Derived: "derived+s", Ignored: "ignored"}, - &X0{S: "s"}, - "", - "", - }, - { - "bad multi-prop entity", - &BadMultiPropEntity{}, - &BadMultiPropEntity{}, - "Multiple is false", - "", - }, - // Regression: CL 25062824 broke handling of appengine.BlobKey fields. - { - "appengine.BlobKey", - &BK{Key: "blah"}, - &BK{Key: "blah"}, - "", - "", - }, - { - "zero time.Time", - &T{T: time.Time{}}, - &T{T: time.Time{}}, - "", - "", - }, - { - "time.Time near Unix zero time", - &T{T: time.Unix(0, 4e3)}, - &T{T: time.Unix(0, 4e3)}, - "", - "", - }, - { - "time.Time, far in the future", - &T{T: time.Date(99999, 1, 1, 0, 0, 0, 0, time.UTC)}, - &T{T: time.Date(99999, 1, 1, 0, 0, 0, 0, time.UTC)}, - "", - "", - }, - { - "time.Time, very far in the past", - &T{T: time.Date(-300000, 1, 1, 0, 0, 0, 0, time.UTC)}, - &T{}, - "time value out of range", - "", - }, - { - "time.Time, very far in the future", - &T{T: time.Date(294248, 1, 1, 0, 0, 0, 0, time.UTC)}, - &T{}, - "time value out of range", - "", - }, - { - "structs", - &N0{ - X0: X0{S: "one", I: 2, i: 3}, - Nonymous: X0{S: "four", I: 5, i: 6}, - Ignore: "ignore", - Other: "other", - }, - &N0{ - X0: X0{S: "one", I: 2}, - Nonymous: X0{S: "four", I: 5}, - Other: "other", - }, - "", - "", - }, - { - "slice of structs", - &N1{ - X0: X0{S: "one", I: 2, i: 3}, - Nonymous: []X0{ - {S: "four", I: 5, i: 6}, - {S: "seven", I: 8, i: 9}, - {S: "ten", I: 11, i: 12}, - {S: "thirteen", I: 14, i: 15}, - }, - Ignore: "ignore", - Other: "other", - }, - &N1{ - X0: X0{S: "one", I: 2}, - Nonymous: []X0{ - {S: "four", I: 5}, - {S: "seven", I: 8}, - {S: "ten", I: 11}, - {S: "thirteen", I: 14}, - }, - Other: "other", - }, - "", - "", - }, - { - "structs with slices of structs", - &N2{ - N1: N1{ - X0: X0{S: "rouge"}, - Nonymous: []X0{ - {S: "rosso0"}, - {S: "rosso1"}, - }, - }, - Green: N1{ - X0: X0{S: "vert"}, - Nonymous: []X0{ - {S: "verde0"}, - {S: "verde1"}, - {S: "verde2"}, - }, - }, - Blue: N1{ - X0: X0{S: "bleu"}, - Nonymous: []X0{ - {S: "blu0"}, - {S: "blu1"}, - {S: "blu2"}, - {S: "blu3"}, - }, - }, - }, - &N2{ - N1: N1{ - X0: X0{S: "rouge"}, - Nonymous: []X0{ - {S: "rosso0"}, - {S: "rosso1"}, - }, - }, - Green: N1{ - X0: X0{S: "vert"}, - Nonymous: []X0{ - {S: "verde0"}, - {S: "verde1"}, - {S: "verde2"}, - }, - }, - Blue: N1{ - X0: X0{S: "bleu"}, - Nonymous: []X0{ - {S: "blu0"}, - {S: "blu1"}, - {S: "blu2"}, - {S: "blu3"}, - }, - }, - }, - "", - "", - }, - { - "save structs load props", - &N2{ - N1: N1{ - X0: X0{S: "rouge"}, - Nonymous: []X0{ - {S: "rosso0"}, - {S: "rosso1"}, - }, - }, - Green: N1{ - X0: X0{S: "vert"}, - Nonymous: []X0{ - {S: "verde0"}, - {S: "verde1"}, - {S: "verde2"}, - }, - }, - Blue: N1{ - X0: X0{S: "bleu"}, - Nonymous: []X0{ - {S: "blu0"}, - {S: "blu1"}, - {S: "blu2"}, - {S: "blu3"}, - }, - }, - }, - &PropertyList{ - Property{Name: "red.S", Value: "rouge", NoIndex: false, Multiple: false}, - Property{Name: "red.I", Value: int64(0), NoIndex: false, Multiple: false}, - Property{Name: "red.Nonymous.S", Value: "rosso0", NoIndex: false, Multiple: true}, - Property{Name: "red.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "red.Nonymous.S", Value: "rosso1", NoIndex: false, Multiple: true}, - Property{Name: "red.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "red.Other", Value: "", NoIndex: false, Multiple: false}, - Property{Name: "green.S", Value: "vert", NoIndex: false, Multiple: false}, - Property{Name: "green.I", Value: int64(0), NoIndex: false, Multiple: false}, - Property{Name: "green.Nonymous.S", Value: "verde0", NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.S", Value: "verde1", NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.S", Value: "verde2", NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "green.Other", Value: "", NoIndex: false, Multiple: false}, - Property{Name: "Blue.S", Value: "bleu", NoIndex: false, Multiple: false}, - Property{Name: "Blue.I", Value: int64(0), NoIndex: false, Multiple: false}, - Property{Name: "Blue.Nonymous.S", Value: "blu0", NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blu1", NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blu2", NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blu3", NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.I", Value: int64(0), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Other", Value: "", NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "save props load structs with ragged fields", - &PropertyList{ - Property{Name: "red.S", Value: "rot", NoIndex: false, Multiple: false}, - Property{Name: "green.Nonymous.I", Value: int64(10), NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(11), NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(12), NoIndex: false, Multiple: true}, - Property{Name: "green.Nonymous.I", Value: int64(13), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blau0", NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.I", Value: int64(20), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blau1", NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.I", Value: int64(21), NoIndex: false, Multiple: true}, - Property{Name: "Blue.Nonymous.S", Value: "blau2", NoIndex: false, Multiple: true}, - }, - &N2{ - N1: N1{ - X0: X0{S: "rot"}, - }, - Green: N1{ - Nonymous: []X0{ - {I: 10}, - {I: 11}, - {I: 12}, - {I: 13}, - }, - }, - Blue: N1{ - Nonymous: []X0{ - {S: "blau0", I: 20}, - {S: "blau1", I: 21}, - {S: "blau2"}, - }, - }, - }, - "", - "", - }, - { - "save structs with noindex tags", - &struct { - A struct { - X string `datastore:",noindex"` - Y string - } `datastore:",noindex"` - B struct { - X string `datastore:",noindex"` - Y string - } - }{}, - &PropertyList{ - Property{Name: "B.Y", Value: "", NoIndex: false, Multiple: false}, - Property{Name: "A.X", Value: "", NoIndex: true, Multiple: false}, - Property{Name: "A.Y", Value: "", NoIndex: true, Multiple: false}, - Property{Name: "B.X", Value: "", NoIndex: true, Multiple: false}, - }, - "", - "", - }, - { - "embedded struct with name override", - &struct { - Inner1 `datastore:"foo"` - }{}, - &PropertyList{ - Property{Name: "foo.W", Value: int64(0), NoIndex: false, Multiple: false}, - Property{Name: "foo.X", Value: "", NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "slice of slices", - &SliceOfSlices{}, - nil, - "flattening nested structs leads to a slice of slices", - "", - }, - { - "recursive struct", - &Recursive{}, - nil, - "recursive struct", - "", - }, - { - "mutually recursive struct", - &MutuallyRecursive0{}, - nil, - "recursive struct", - "", - }, - { - "non-exported struct fields", - &struct { - i, J int64 - }{i: 1, J: 2}, - &PropertyList{ - Property{Name: "J", Value: int64(2), NoIndex: false, Multiple: false}, - }, - "", - "", - }, - { - "json.RawMessage", - &struct { - J json.RawMessage - }{ - J: json.RawMessage("rawr"), - }, - &PropertyList{ - Property{Name: "J", Value: []byte("rawr"), NoIndex: true, Multiple: false}, - }, - "", - "", - }, - { - "json.RawMessage to myBlob", - &struct { - B json.RawMessage - }{ - B: json.RawMessage("rawr"), - }, - &B2{B: myBlob("rawr")}, - "", - "", - }, -} - -// checkErr returns the empty string if either both want and err are zero, -// or if want is a non-empty substring of err's string representation. -func checkErr(want string, err error) string { - if err != nil { - got := err.Error() - if want == "" || strings.Index(got, want) == -1 { - return got - } - } else if want != "" { - return fmt.Sprintf("want error %q", want) - } - return "" -} - -func TestRoundTrip(t *testing.T) { - for _, tc := range testCases { - p, err := saveEntity(testAppID, testKey0, tc.src) - if s := checkErr(tc.putErr, err); s != "" { - t.Errorf("%s: save: %s", tc.desc, s) - continue - } - if p == nil { - continue - } - var got interface{} - if _, ok := tc.want.(*PropertyList); ok { - got = new(PropertyList) - } else { - got = reflect.New(reflect.TypeOf(tc.want).Elem()).Interface() - } - err = loadEntity(got, p) - if s := checkErr(tc.getErr, err); s != "" { - t.Errorf("%s: load: %s", tc.desc, s) - continue - } - equal := false - if gotT, ok := got.(*T); ok { - // Round tripping a time.Time can result in a different time.Location: Local instead of UTC. - // We therefore test equality explicitly, instead of relying on reflect.DeepEqual. - equal = gotT.T.Equal(tc.want.(*T).T) - } else { - equal = reflect.DeepEqual(got, tc.want) - } - if !equal { - t.Errorf("%s: compare: got %v want %v", tc.desc, got, tc.want) - continue - } - } -} - -func TestQueryConstruction(t *testing.T) { - tests := []struct { - q, exp *Query - err string - }{ - { - q: NewQuery("Foo"), - exp: &Query{ - kind: "Foo", - limit: -1, - }, - }, - { - // Regular filtered query with standard spacing. - q: NewQuery("Foo").Filter("foo >", 7), - exp: &Query{ - kind: "Foo", - filter: []filter{ - { - FieldName: "foo", - Op: greaterThan, - Value: 7, - }, - }, - limit: -1, - }, - }, - { - // Filtered query with no spacing. - q: NewQuery("Foo").Filter("foo=", 6), - exp: &Query{ - kind: "Foo", - filter: []filter{ - { - FieldName: "foo", - Op: equal, - Value: 6, - }, - }, - limit: -1, - }, - }, - { - // Filtered query with funky spacing. - q: NewQuery("Foo").Filter(" foo< ", 8), - exp: &Query{ - kind: "Foo", - filter: []filter{ - { - FieldName: "foo", - Op: lessThan, - Value: 8, - }, - }, - limit: -1, - }, - }, - { - // Filtered query with multicharacter op. - q: NewQuery("Foo").Filter("foo >=", 9), - exp: &Query{ - kind: "Foo", - filter: []filter{ - { - FieldName: "foo", - Op: greaterEq, - Value: 9, - }, - }, - limit: -1, - }, - }, - { - // Query with ordering. - q: NewQuery("Foo").Order("bar"), - exp: &Query{ - kind: "Foo", - order: []order{ - { - FieldName: "bar", - Direction: ascending, - }, - }, - limit: -1, - }, - }, - { - // Query with reverse ordering, and funky spacing. - q: NewQuery("Foo").Order(" - bar"), - exp: &Query{ - kind: "Foo", - order: []order{ - { - FieldName: "bar", - Direction: descending, - }, - }, - limit: -1, - }, - }, - { - // Query with an empty ordering. - q: NewQuery("Foo").Order(""), - err: "empty order", - }, - { - // Query with a + ordering. - q: NewQuery("Foo").Order("+bar"), - err: "invalid order", - }, - } - for i, test := range tests { - if test.q.err != nil { - got := test.q.err.Error() - if !strings.Contains(got, test.err) { - t.Errorf("%d: error mismatch: got %q want something containing %q", i, got, test.err) - } - continue - } - if !reflect.DeepEqual(test.q, test.exp) { - t.Errorf("%d: mismatch: got %v want %v", i, test.q, test.exp) - } - } -} - -func TestStringMeaning(t *testing.T) { - var xx [4]interface{} - xx[0] = &struct { - X string - }{"xx0"} - xx[1] = &struct { - X string `datastore:",noindex"` - }{"xx1"} - xx[2] = &struct { - X []byte - }{[]byte("xx2")} - xx[3] = &struct { - X []byte `datastore:",noindex"` - }{[]byte("xx3")} - - indexed := [4]bool{ - true, - false, - false, // A []byte is always no-index. - false, - } - want := [4]pb.Property_Meaning{ - pb.Property_NO_MEANING, - pb.Property_TEXT, - pb.Property_BLOB, - pb.Property_BLOB, - } - - for i, x := range xx { - props, err := SaveStruct(x) - if err != nil { - t.Errorf("i=%d: SaveStruct: %v", i, err) - continue - } - e, err := propertiesToProto("appID", testKey0, props) - if err != nil { - t.Errorf("i=%d: propertiesToProto: %v", i, err) - continue - } - var p *pb.Property - switch { - case indexed[i] && len(e.Property) == 1: - p = e.Property[0] - case !indexed[i] && len(e.RawProperty) == 1: - p = e.RawProperty[0] - default: - t.Errorf("i=%d: EntityProto did not have expected property slice", i) - continue - } - if got := p.GetMeaning(); got != want[i] { - t.Errorf("i=%d: meaning: got %v, want %v", i, got, want[i]) - continue - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/doc.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/doc.go deleted file mode 100644 index d50fc2c3641..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/doc.go +++ /dev/null @@ -1,316 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package datastore provides a client for App Engine's datastore service. - - -Basic Operations - -Entities are the unit of storage and are associated with a key. A key -consists of an optional parent key, a string application ID, a string kind -(also known as an entity type), and either a StringID or an IntID. A -StringID is also known as an entity name or key name. - -It is valid to create a key with a zero StringID and a zero IntID; this is -called an incomplete key, and does not refer to any saved entity. Putting an -entity into the datastore under an incomplete key will cause a unique key -to be generated for that entity, with a non-zero IntID. - -An entity's contents are a mapping from case-sensitive field names to values. -Valid value types are: - - signed integers (int, int8, int16, int32 and int64), - - bool, - - string, - - float32 and float64, - - []byte (up to 1 megabyte in length), - - any type whose underlying type is one of the above predeclared types, - - ByteString, - - *Key, - - time.Time (stored with microsecond precision), - - appengine.BlobKey, - - appengine.GeoPoint, - - structs whose fields are all valid value types, - - slices of any of the above. - -Slices of structs are valid, as are structs that contain slices. However, if -one struct contains another, then at most one of those can be repeated. This -disqualifies recursively defined struct types: any struct T that (directly or -indirectly) contains a []T. - -The Get and Put functions load and save an entity's contents. An entity's -contents are typically represented by a struct pointer. - -Example code: - - type Entity struct { - Value string - } - - func handle(w http.ResponseWriter, r *http.Request) { - c := appengine.NewContext(r) - - k := datastore.NewKey(c, "Entity", "stringID", 0, nil) - e := new(Entity) - if err := datastore.Get(c, k, e); err != nil { - http.Error(w, err.Error(), 500) - return - } - - old := e.Value - e.Value = r.URL.Path - - if _, err := datastore.Put(c, k, e); err != nil { - http.Error(w, err.Error(), 500) - return - } - - w.Header().Set("Content-Type", "text/plain; charset=utf-8") - fmt.Fprintf(w, "old=%q\nnew=%q\n", old, e.Value) - } - -GetMulti, PutMulti and DeleteMulti are batch versions of the Get, Put and -Delete functions. They take a []*Key instead of a *Key, and may return an -appengine.MultiError when encountering partial failure. - - -Properties - -An entity's contents can be represented by a variety of types. These are -typically struct pointers, but can also be any type that implements the -PropertyLoadSaver interface. If using a struct pointer, you do not have to -explicitly implement the PropertyLoadSaver interface; the datastore will -automatically convert via reflection. If a struct pointer does implement that -interface then those methods will be used in preference to the default -behavior for struct pointers. Struct pointers are more strongly typed and are -easier to use; PropertyLoadSavers are more flexible. - -The actual types passed do not have to match between Get and Put calls or even -across different App Engine requests. It is valid to put a *PropertyList and -get that same entity as a *myStruct, or put a *myStruct0 and get a *myStruct1. -Conceptually, any entity is saved as a sequence of properties, and is loaded -into the destination value on a property-by-property basis. When loading into -a struct pointer, an entity that cannot be completely represented (such as a -missing field) will result in an ErrFieldMismatch error but it is up to the -caller whether this error is fatal, recoverable or ignorable. - -By default, for struct pointers, all properties are potentially indexed, and -the property name is the same as the field name (and hence must start with an -upper case letter). Fields may have a `datastore:"name,options"` tag. The tag -name is the property name, which must be one or more valid Go identifiers -joined by ".", but may start with a lower case letter. An empty tag name means -to just use the field name. A "-" tag name means that the datastore will -ignore that field. If options is "noindex" then the field will not be indexed. -If the options is "" then the comma may be omitted. There are no other -recognized options. - -Fields (except for []byte) are indexed by default. Strings longer than 500 -characters cannot be indexed; fields used to store long strings should be -tagged with "noindex". Similarly, ByteStrings longer than 500 bytes cannot be -indexed. - -Example code: - - // A and B are renamed to a and b. - // A, C and J are not indexed. - // D's tag is equivalent to having no tag at all (E). - // I is ignored entirely by the datastore. - // J has tag information for both the datastore and json packages. - type TaggedStruct struct { - A int `datastore:"a,noindex"` - B int `datastore:"b"` - C int `datastore:",noindex"` - D int `datastore:""` - E int - I int `datastore:"-"` - J int `datastore:",noindex" json:"j"` - } - - -Structured Properties - -If the struct pointed to contains other structs, then the nested or embedded -structs are flattened. For example, given these definitions: - - type Inner1 struct { - W int32 - X string - } - - type Inner2 struct { - Y float64 - } - - type Inner3 struct { - Z bool - } - - type Outer struct { - A int16 - I []Inner1 - J Inner2 - Inner3 - } - -then an Outer's properties would be equivalent to those of: - - type OuterEquivalent struct { - A int16 - IDotW []int32 `datastore:"I.W"` - IDotX []string `datastore:"I.X"` - JDotY float64 `datastore:"J.Y"` - Z bool - } - -If Outer's embedded Inner3 field was tagged as `datastore:"Foo"` then the -equivalent field would instead be: FooDotZ bool `datastore:"Foo.Z"`. - -If an outer struct is tagged "noindex" then all of its implicit flattened -fields are effectively "noindex". - - -The PropertyLoadSaver Interface - -An entity's contents can also be represented by any type that implements the -PropertyLoadSaver interface. This type may be a struct pointer, but it does -not have to be. The datastore package will call Load when getting the entity's -contents, and Save when putting the entity's contents. -Possible uses include deriving non-stored fields, verifying fields, or indexing -a field only if its value is positive. - -Example code: - - type CustomPropsExample struct { - I, J int - // Sum is not stored, but should always be equal to I + J. - Sum int `datastore:"-"` - } - - func (x *CustomPropsExample) Load(c <-chan Property) error { - // Load I and J as usual. - if err := datastore.LoadStruct(x, c); err != nil { - return err - } - // Derive the Sum field. - x.Sum = x.I + x.J - return nil - } - - func (x *CustomPropsExample) Save(c chan<- Property) error { - defer close(c) - // Validate the Sum field. - if x.Sum != x.I + x.J { - return errors.New("CustomPropsExample has inconsistent sum") - } - // Save I and J as usual. The code below is equivalent to calling - // "return datastore.SaveStruct(x, c)", but is done manually for - // demonstration purposes. - c <- datastore.Property{ - Name: "I", - Value: int64(x.I), - } - c <- datastore.Property{ - Name: "J", - Value: int64(x.J), - } - return nil - } - -The *PropertyList type implements PropertyLoadSaver, and can therefore hold an -arbitrary entity's contents. - - -Queries - -Queries retrieve entities based on their properties or key's ancestry. Running -a query yields an iterator of results: either keys or (key, entity) pairs. -Queries are re-usable and it is safe to call Query.Run from concurrent -goroutines. Iterators are not safe for concurrent use. - -Queries are immutable, and are either created by calling NewQuery, or derived -from an existing query by calling a method like Filter or Order that returns a -new query value. A query is typically constructed by calling NewQuery followed -by a chain of zero or more such methods. These methods are: - - Ancestor and Filter constrain the entities returned by running a query. - - Order affects the order in which they are returned. - - Project constrains the fields returned. - - Distinct de-duplicates projected entities. - - KeysOnly makes the iterator return only keys, not (key, entity) pairs. - - Start, End, Offset and Limit define which sub-sequence of matching entities - to return. Start and End take cursors, Offset and Limit take integers. Start - and Offset affect the first result, End and Limit affect the last result. - If both Start and Offset are set, then the offset is relative to Start. - If both End and Limit are set, then the earliest constraint wins. Limit is - relative to Start+Offset, not relative to End. As a special case, a - negative limit means unlimited. - -Example code: - - type Widget struct { - Description string - Price int - } - - func handle(w http.ResponseWriter, r *http.Request) { - c := appengine.NewContext(r) - q := datastore.NewQuery("Widget"). - Filter("Price <", 1000). - Order("-Price") - b := new(bytes.Buffer) - for t := q.Run(c); ; { - var x Widget - key, err := t.Next(&x) - if err == datastore.Done { - break - } - if err != nil { - serveError(c, w, err) - return - } - fmt.Fprintf(b, "Key=%v\nWidget=%#v\n\n", key, x) - } - w.Header().Set("Content-Type", "text/plain; charset=utf-8") - io.Copy(w, b) - } - - -Transactions - -RunInTransaction runs a function in a transaction. - -Example code: - - type Counter struct { - Count int - } - - func inc(c appengine.Context, key *datastore.Key) (int, error) { - var x Counter - if err := datastore.Get(c, key, &x); err != nil && err != datastore.ErrNoSuchEntity { - return 0, err - } - x.Count++ - if _, err := datastore.Put(c, key, &x); err != nil { - return 0, err - } - return x.Count, nil - } - - func handle(w http.ResponseWriter, r *http.Request) { - c := appengine.NewContext(r) - var count int - err := datastore.RunInTransaction(c, func(c appengine.Context) error { - var err1 error - count, err1 = inc(c, datastore.NewKey(c, "Counter", "singleton", 0, nil)) - return err1 - }, nil) - if err != nil { - serveError(c, w, err) - return - } - w.Header().Set("Content-Type", "text/plain; charset=utf-8") - fmt.Fprintf(w, "Count=%d", count) - } -*/ -package datastore diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/key.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/key.go deleted file mode 100644 index 77dd9e03bea..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/key.go +++ /dev/null @@ -1,309 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "bytes" - "encoding/base64" - "encoding/gob" - "errors" - "fmt" - "strconv" - "strings" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/datastore" -) - -// Key represents the datastore key for a stored entity, and is immutable. -type Key struct { - kind string - stringID string - intID int64 - parent *Key - appID string - namespace string -} - -// Kind returns the key's kind (also known as entity type). -func (k *Key) Kind() string { - return k.kind -} - -// StringID returns the key's string ID (also known as an entity name or key -// name), which may be "". -func (k *Key) StringID() string { - return k.stringID -} - -// IntID returns the key's integer ID, which may be 0. -func (k *Key) IntID() int64 { - return k.intID -} - -// Parent returns the key's parent key, which may be nil. -func (k *Key) Parent() *Key { - return k.parent -} - -// AppID returns the key's application ID. -func (k *Key) AppID() string { - return k.appID -} - -// Namespace returns the key's namespace. -func (k *Key) Namespace() string { - return k.namespace -} - -// Incomplete returns whether the key does not refer to a stored entity. -// In particular, whether the key has a zero StringID and a zero IntID. -func (k *Key) Incomplete() bool { - return k.stringID == "" && k.intID == 0 -} - -// valid returns whether the key is valid. -func (k *Key) valid() bool { - if k == nil { - return false - } - for ; k != nil; k = k.parent { - if k.kind == "" || k.appID == "" { - return false - } - if k.stringID != "" && k.intID != 0 { - return false - } - if k.parent != nil { - if k.parent.Incomplete() { - return false - } - if k.parent.appID != k.appID || k.parent.namespace != k.namespace { - return false - } - } - } - return true -} - -// Equal returns whether two keys are equal. -func (k *Key) Equal(o *Key) bool { - for k != nil && o != nil { - if k.kind != o.kind || k.stringID != o.stringID || k.intID != o.intID || k.appID != o.appID || k.namespace != o.namespace { - return false - } - k, o = k.parent, o.parent - } - return k == o -} - -// root returns the furthest ancestor of a key, which may be itself. -func (k *Key) root() *Key { - for k.parent != nil { - k = k.parent - } - return k -} - -// marshal marshals the key's string representation to the buffer. -func (k *Key) marshal(b *bytes.Buffer) { - if k.parent != nil { - k.parent.marshal(b) - } - b.WriteByte('/') - b.WriteString(k.kind) - b.WriteByte(',') - if k.stringID != "" { - b.WriteString(k.stringID) - } else { - b.WriteString(strconv.FormatInt(k.intID, 10)) - } -} - -// String returns a string representation of the key. -func (k *Key) String() string { - if k == nil { - return "" - } - b := bytes.NewBuffer(make([]byte, 0, 512)) - k.marshal(b) - return b.String() -} - -type gobKey struct { - Kind string - StringID string - IntID int64 - Parent *gobKey - AppID string - Namespace string -} - -func keyToGobKey(k *Key) *gobKey { - if k == nil { - return nil - } - return &gobKey{ - Kind: k.kind, - StringID: k.stringID, - IntID: k.intID, - Parent: keyToGobKey(k.parent), - AppID: k.appID, - Namespace: k.namespace, - } -} - -func gobKeyToKey(gk *gobKey) *Key { - if gk == nil { - return nil - } - return &Key{ - kind: gk.Kind, - stringID: gk.StringID, - intID: gk.IntID, - parent: gobKeyToKey(gk.Parent), - appID: gk.AppID, - namespace: gk.Namespace, - } -} - -func (k *Key) GobEncode() ([]byte, error) { - buf := new(bytes.Buffer) - if err := gob.NewEncoder(buf).Encode(keyToGobKey(k)); err != nil { - return nil, err - } - return buf.Bytes(), nil -} - -func (k *Key) GobDecode(buf []byte) error { - gk := new(gobKey) - if err := gob.NewDecoder(bytes.NewBuffer(buf)).Decode(gk); err != nil { - return err - } - *k = *gobKeyToKey(gk) - return nil -} - -func (k *Key) MarshalJSON() ([]byte, error) { - return []byte(`"` + k.Encode() + `"`), nil -} - -func (k *Key) UnmarshalJSON(buf []byte) error { - if len(buf) < 2 || buf[0] != '"' || buf[len(buf)-1] != '"' { - return errors.New("datastore: bad JSON key") - } - k2, err := DecodeKey(string(buf[1 : len(buf)-1])) - if err != nil { - return err - } - *k = *k2 - return nil -} - -// Encode returns an opaque representation of the key -// suitable for use in HTML and URLs. -// This is compatible with the Python and Java runtimes. -func (k *Key) Encode() string { - ref := keyToProto("", k) - - b, err := proto.Marshal(ref) - if err != nil { - panic(err) - } - - // Trailing padding is stripped. - return strings.TrimRight(base64.URLEncoding.EncodeToString(b), "=") -} - -// DecodeKey decodes a key from the opaque representation returned by Encode. -func DecodeKey(encoded string) (*Key, error) { - // Re-add padding. - if m := len(encoded) % 4; m != 0 { - encoded += strings.Repeat("=", 4-m) - } - - b, err := base64.URLEncoding.DecodeString(encoded) - if err != nil { - return nil, err - } - - ref := new(pb.Reference) - if err := proto.Unmarshal(b, ref); err != nil { - return nil, err - } - - return protoToKey(ref) -} - -// NewIncompleteKey creates a new incomplete key. -// kind cannot be empty. -func NewIncompleteKey(c appengine.Context, kind string, parent *Key) *Key { - return NewKey(c, kind, "", 0, parent) -} - -// NewKey creates a new key. -// kind cannot be empty. -// Either one or both of stringID and intID must be zero. If both are zero, -// the key returned is incomplete. -// parent must either be a complete key or nil. -func NewKey(c appengine.Context, kind, stringID string, intID int64, parent *Key) *Key { - // If there's a parent key, use its namespace. - // Otherwise, do a fake RPC to try to get a namespace if c is a namespacedContext (or wraps one). - var namespace string - if parent != nil { - namespace = parent.namespace - } else { - namespace = internal.VirtAPI(c, "GetNamespace") - } - - return &Key{ - kind: kind, - stringID: stringID, - intID: intID, - parent: parent, - appID: c.FullyQualifiedAppID(), - namespace: namespace, - } -} - -// AllocateIDs returns a range of n integer IDs with the given kind and parent -// combination. kind cannot be empty; parent may be nil. The IDs in the range -// returned will not be used by the datastore's automatic ID sequence generator -// and may be used with NewKey without conflict. -// -// The range is inclusive at the low end and exclusive at the high end. In -// other words, valid intIDs x satisfy low <= x && x < high. -// -// If no error is returned, low + n == high. -func AllocateIDs(c appengine.Context, kind string, parent *Key, n int) (low, high int64, err error) { - if kind == "" { - return 0, 0, errors.New("datastore: AllocateIDs given an empty kind") - } - if n < 0 { - return 0, 0, fmt.Errorf("datastore: AllocateIDs given a negative count: %d", n) - } - if n == 0 { - return 0, 0, nil - } - req := &pb.AllocateIdsRequest{ - ModelKey: keyToProto("", NewIncompleteKey(c, kind, parent)), - Size: proto.Int64(int64(n)), - } - res := &pb.AllocateIdsResponse{} - if err := c.Call("datastore_v3", "AllocateIds", req, res, nil); err != nil { - return 0, 0, err - } - // The protobuf is inclusive at both ends. Idiomatic Go (e.g. slices, for loops) - // is inclusive at the low end and exclusive at the high end, so we add 1. - low = res.GetStart() - high = res.GetEnd() + 1 - if low+int64(n) != high { - return 0, 0, fmt.Errorf("datastore: internal error: could not allocate %d IDs", n) - } - return low, high, nil -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/key_test.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/key_test.go deleted file mode 100644 index 0944983ea78..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/key_test.go +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright 2011 Google Inc. All Rights Reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "bytes" - "encoding/gob" - "encoding/json" - "testing" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" -) - -func TestKeyEncoding(t *testing.T) { - testCases := []struct { - desc string - key *Key - exp string - }{ - { - desc: "A simple key with an int ID", - key: &Key{ - kind: "Person", - intID: 1, - appID: "glibrary", - }, - exp: "aghnbGlicmFyeXIMCxIGUGVyc29uGAEM", - }, - { - desc: "A simple key with a string ID", - key: &Key{ - kind: "Graph", - stringID: "graph:7-day-active", - appID: "glibrary", - }, - exp: "aghnbGlicmFyeXIdCxIFR3JhcGgiEmdyYXBoOjctZGF5LWFjdGl2ZQw", - }, - { - desc: "A key with a parent", - key: &Key{ - kind: "WordIndex", - intID: 1033, - parent: &Key{ - kind: "WordIndex", - intID: 1020032, - appID: "glibrary", - }, - appID: "glibrary", - }, - exp: "aghnbGlicmFyeXIhCxIJV29yZEluZGV4GIChPgwLEglXb3JkSW5kZXgYiQgM", - }, - } - for _, tc := range testCases { - enc := tc.key.Encode() - if enc != tc.exp { - t.Errorf("%s: got %q, want %q", tc.desc, enc, tc.exp) - } - - key, err := DecodeKey(tc.exp) - if err != nil { - t.Errorf("%s: failed decoding key: %v", tc.desc, err) - continue - } - if !key.Equal(tc.key) { - t.Errorf("%s: decoded key %v, want %v", tc.desc, key, tc.key) - } - } -} - -func TestKeyGob(t *testing.T) { - k := &Key{ - kind: "Gopher", - intID: 3, - parent: &Key{ - kind: "Mom", - stringID: "narwhal", - appID: "gopher-con", - }, - appID: "gopher-con", - } - - buf := new(bytes.Buffer) - if err := gob.NewEncoder(buf).Encode(k); err != nil { - t.Fatalf("gob encode failed: %v", err) - } - - k2 := new(Key) - if err := gob.NewDecoder(buf).Decode(k2); err != nil { - t.Fatalf("gob decode failed: %v", err) - } - if !k2.Equal(k) { - t.Errorf("gob round trip of %v produced %v", k, k2) - } -} - -func TestNilKeyGob(t *testing.T) { - type S struct { - Key *Key - } - s1 := new(S) - - buf := new(bytes.Buffer) - if err := gob.NewEncoder(buf).Encode(s1); err != nil { - t.Fatalf("gob encode failed: %v", err) - } - - s2 := new(S) - if err := gob.NewDecoder(buf).Decode(s2); err != nil { - t.Fatalf("gob decode failed: %v", err) - } - if s2.Key != nil { - t.Errorf("gob round trip of nil key produced %v", s2.Key) - } -} - -func TestKeyJSON(t *testing.T) { - k := &Key{ - kind: "Gopher", - intID: 2, - parent: &Key{ - kind: "Mom", - stringID: "narwhal", - appID: "gopher-con", - }, - appID: "gopher-con", - } - exp := `"` + k.Encode() + `"` - - buf, err := json.Marshal(k) - if err != nil { - t.Fatalf("json.Marshal failed: %v", err) - } - if s := string(buf); s != exp { - t.Errorf("JSON encoding of key %v: got %q, want %q", k, s, exp) - } - - k2 := new(Key) - if err := json.Unmarshal(buf, k2); err != nil { - t.Fatalf("json.Unmarshal failed: %v", err) - } - if !k2.Equal(k) { - t.Errorf("JSON round trip of %v produced %v", k, k2) - } -} - -func TestNilKeyJSON(t *testing.T) { - type S struct { - Key *Key - } - s1 := new(S) - - buf, err := json.Marshal(s1) - if err != nil { - t.Fatalf("json.Marshal failed: %v", err) - } - - s2 := new(S) - if err := json.Unmarshal(buf, s2); err != nil { - t.Fatalf("json.Unmarshal failed: %v", err) - } - if s2.Key != nil { - t.Errorf("JSON round trip of nil key produced %v", s2.Key) - } -} - -type fakeKeyer struct { - appengine.Context -} - -func (fakeKeyer) FullyQualifiedAppID() string { return "s~some-app" } -func (fakeKeyer) Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error { - return nil -} - -func TestIncompleteKeyWithParent(t *testing.T) { - var c appengine.Context = fakeKeyer{} - - // fadduh is a complete key. - fadduh := NewKey(c, "Person", "", 1, nil) - if fadduh.Incomplete() { - t.Fatalf("fadduh is incomplete") - } - - // robert is an incomplete key with fadduh as a parent. - robert := NewIncompleteKey(c, "Person", fadduh) - if !robert.Incomplete() { - t.Fatalf("robert is complete") - } - - // Both should be valid keys. - if !fadduh.valid() { - t.Errorf("fadduh is invalid: %v", fadduh) - } - if !robert.valid() { - t.Errorf("robert is invalid: %v", robert) - } -} - -func TestNamespace(t *testing.T) { - key := &Key{ - kind: "Person", - intID: 1, - appID: "s~some-app", - namespace: "mynamespace", - } - if g, w := key.Namespace(), "mynamespace"; g != w { - t.Errorf("key.Namespace() = %q, want %q", g, w) - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/load.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/load.go deleted file mode 100644 index 3f3c80c36d5..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/load.go +++ /dev/null @@ -1,334 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "fmt" - "reflect" - "time" - - "google.golang.org/appengine" - pb "google.golang.org/appengine/internal/datastore" -) - -var ( - typeOfBlobKey = reflect.TypeOf(appengine.BlobKey("")) - typeOfByteSlice = reflect.TypeOf([]byte(nil)) - typeOfByteString = reflect.TypeOf(ByteString(nil)) - typeOfGeoPoint = reflect.TypeOf(appengine.GeoPoint{}) - typeOfTime = reflect.TypeOf(time.Time{}) -) - -// typeMismatchReason returns a string explaining why the property p could not -// be stored in an entity field of type v.Type(). -func typeMismatchReason(p Property, v reflect.Value) string { - entityType := "empty" - switch p.Value.(type) { - case int64: - entityType = "int" - case bool: - entityType = "bool" - case string: - entityType = "string" - case float64: - entityType = "float" - case *Key: - entityType = "*datastore.Key" - case time.Time: - entityType = "time.Time" - case appengine.BlobKey: - entityType = "appengine.BlobKey" - case appengine.GeoPoint: - entityType = "appengine.GeoPoint" - case ByteString: - entityType = "datastore.ByteString" - case []byte: - entityType = "[]byte" - } - return fmt.Sprintf("type mismatch: %s versus %v", entityType, v.Type()) -} - -type propertyLoader struct { - // m holds the number of times a substruct field like "Foo.Bar.Baz" has - // been seen so far. The map is constructed lazily. - m map[string]int -} - -func (l *propertyLoader) load(codec *structCodec, structValue reflect.Value, p Property, requireSlice bool) string { - var v reflect.Value - // Traverse a struct's struct-typed fields. - for name := p.Name; ; { - decoder, ok := codec.byName[name] - if !ok { - return "no such struct field" - } - v = structValue.Field(decoder.index) - if !v.IsValid() { - return "no such struct field" - } - if !v.CanSet() { - return "cannot set struct field" - } - - if decoder.substructCodec == nil { - break - } - - if v.Kind() == reflect.Slice { - if l.m == nil { - l.m = make(map[string]int) - } - index := l.m[p.Name] - l.m[p.Name] = index + 1 - for v.Len() <= index { - v.Set(reflect.Append(v, reflect.New(v.Type().Elem()).Elem())) - } - structValue = v.Index(index) - requireSlice = false - } else { - structValue = v - } - // Strip the "I." from "I.X". - name = name[len(codec.byIndex[decoder.index].name):] - codec = decoder.substructCodec - } - - var slice reflect.Value - if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 { - slice = v - v = reflect.New(v.Type().Elem()).Elem() - } else if requireSlice { - return "multiple-valued property requires a slice field type" - } - - // Convert indexValues to a Go value with a meaning derived from the - // destination type. - pValue := p.Value - if iv, ok := pValue.(indexValue); ok { - meaning := pb.Property_NO_MEANING - switch v.Type() { - case typeOfBlobKey: - meaning = pb.Property_BLOBKEY - case typeOfByteSlice: - meaning = pb.Property_BLOB - case typeOfByteString: - meaning = pb.Property_BYTESTRING - case typeOfGeoPoint: - meaning = pb.Property_GEORSS_POINT - case typeOfTime: - meaning = pb.Property_GD_WHEN - } - var err error - pValue, err = propValue(iv.value, meaning) - if err != nil { - return err.Error() - } - } - - switch v.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - x, ok := pValue.(int64) - if !ok && pValue != nil { - return typeMismatchReason(p, v) - } - if v.OverflowInt(x) { - return fmt.Sprintf("value %v overflows struct field of type %v", x, v.Type()) - } - v.SetInt(x) - case reflect.Bool: - x, ok := pValue.(bool) - if !ok && pValue != nil { - return typeMismatchReason(p, v) - } - v.SetBool(x) - case reflect.String: - switch x := pValue.(type) { - case appengine.BlobKey: - v.SetString(string(x)) - case ByteString: - v.SetString(string(x)) - case string: - v.SetString(x) - default: - if pValue != nil { - return typeMismatchReason(p, v) - } - } - case reflect.Float32, reflect.Float64: - x, ok := pValue.(float64) - if !ok && pValue != nil { - return typeMismatchReason(p, v) - } - if v.OverflowFloat(x) { - return fmt.Sprintf("value %v overflows struct field of type %v", x, v.Type()) - } - v.SetFloat(x) - case reflect.Ptr: - x, ok := pValue.(*Key) - if !ok && pValue != nil { - return typeMismatchReason(p, v) - } - if _, ok := v.Interface().(*Key); !ok { - return typeMismatchReason(p, v) - } - v.Set(reflect.ValueOf(x)) - case reflect.Struct: - switch v.Type() { - case typeOfTime: - x, ok := pValue.(time.Time) - if !ok && pValue != nil { - return typeMismatchReason(p, v) - } - v.Set(reflect.ValueOf(x)) - case typeOfGeoPoint: - x, ok := pValue.(appengine.GeoPoint) - if !ok && pValue != nil { - return typeMismatchReason(p, v) - } - v.Set(reflect.ValueOf(x)) - default: - return typeMismatchReason(p, v) - } - case reflect.Slice: - x, ok := pValue.([]byte) - if !ok { - if y, yok := pValue.(ByteString); yok { - x, ok = []byte(y), true - } - } - if !ok && pValue != nil { - return typeMismatchReason(p, v) - } - if v.Type().Elem().Kind() != reflect.Uint8 { - return typeMismatchReason(p, v) - } - v.SetBytes(x) - default: - return typeMismatchReason(p, v) - } - if slice.IsValid() { - slice.Set(reflect.Append(slice, v)) - } - return "" -} - -// loadEntity loads an EntityProto into PropertyLoadSaver or struct pointer. -func loadEntity(dst interface{}, src *pb.EntityProto) (err error) { - props, err := protoToProperties(src) - if err != nil { - return err - } - if e, ok := dst.(PropertyLoadSaver); ok { - return e.Load(props) - } - return LoadStruct(dst, props) -} - -func (s structPLS) Load(props []Property) error { - var fieldName, reason string - var l propertyLoader - for _, p := range props { - if errStr := l.load(s.codec, s.v, p, p.Multiple); errStr != "" { - // We don't return early, as we try to load as many properties as possible. - // It is valid to load an entity into a struct that cannot fully represent it. - // That case returns an error, but the caller is free to ignore it. - fieldName, reason = p.Name, errStr - } - } - if reason != "" { - return &ErrFieldMismatch{ - StructType: s.v.Type(), - FieldName: fieldName, - Reason: reason, - } - } - return nil -} - -func protoToProperties(src *pb.EntityProto) ([]Property, error) { - props, rawProps := src.Property, src.RawProperty - out := make([]Property, 0, len(props)+len(rawProps)) - for { - var ( - x *pb.Property - noIndex bool - ) - if len(props) > 0 { - x, props = props[0], props[1:] - } else if len(rawProps) > 0 { - x, rawProps = rawProps[0], rawProps[1:] - noIndex = true - } else { - break - } - - var value interface{} - if x.Meaning != nil && *x.Meaning == pb.Property_INDEX_VALUE { - value = indexValue{x.Value} - } else { - var err error - value, err = propValue(x.Value, x.GetMeaning()) - if err != nil { - return nil, err - } - } - out = append(out, Property{ - Name: x.GetName(), - Value: value, - NoIndex: noIndex, - Multiple: x.GetMultiple(), - }) - } - return out, nil -} - -// propValue returns a Go value that combines the raw PropertyValue with a -// meaning. For example, an Int64Value with GD_WHEN becomes a time.Time. -func propValue(v *pb.PropertyValue, m pb.Property_Meaning) (interface{}, error) { - switch { - case v.Int64Value != nil: - if m == pb.Property_GD_WHEN { - return fromUnixMicro(*v.Int64Value), nil - } else { - return *v.Int64Value, nil - } - case v.BooleanValue != nil: - return *v.BooleanValue, nil - case v.StringValue != nil: - if m == pb.Property_BLOB { - return []byte(*v.StringValue), nil - } else if m == pb.Property_BLOBKEY { - return appengine.BlobKey(*v.StringValue), nil - } else if m == pb.Property_BYTESTRING { - return ByteString(*v.StringValue), nil - } else { - return *v.StringValue, nil - } - case v.DoubleValue != nil: - return *v.DoubleValue, nil - case v.Referencevalue != nil: - key, err := referenceValueToKey(v.Referencevalue) - if err != nil { - return nil, err - } - return key, nil - case v.Pointvalue != nil: - // NOTE: Strangely, latitude maps to X, longitude to Y. - return appengine.GeoPoint{Lat: v.Pointvalue.GetX(), Lng: v.Pointvalue.GetY()}, nil - } - return nil, nil -} - -// indexValue is a Property value that is created when entities are loaded from -// an index, such as from a projection query. -// -// Such Property values do not contain all of the metadata required to be -// faithfully represented as a Go value, and are instead represented as an -// opaque indexValue. Load the properties into a concrete struct type (e.g. by -// passing a struct pointer to Iterator.Next) to reconstruct actual Go values -// of type int, string, time.Time, etc. -type indexValue struct { - value *pb.PropertyValue -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/prop.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/prop.go deleted file mode 100644 index b0a1e0fd8df..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/prop.go +++ /dev/null @@ -1,294 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "fmt" - "reflect" - "strings" - "sync" - "unicode" -) - -// Entities with more than this many indexed properties will not be saved. -const maxIndexedProperties = 5000 - -// []byte fields more than 1 megabyte long will not be loaded or saved. -const maxBlobLen = 1 << 20 - -// Property is a name/value pair plus some metadata. A datastore entity's -// contents are loaded and saved as a sequence of Properties. An entity can -// have multiple Properties with the same name, provided that p.Multiple is -// true on all of that entity's Properties with that name. -type Property struct { - // Name is the property name. - Name string - // Value is the property value. The valid types are: - // - int64 - // - bool - // - string - // - float64 - // - ByteString - // - *Key - // - time.Time - // - appengine.BlobKey - // - appengine.GeoPoint - // - []byte (up to 1 megabyte in length) - // This set is smaller than the set of valid struct field types that the - // datastore can load and save. A Property Value cannot be a slice (apart - // from []byte); use multiple Properties instead. Also, a Value's type - // must be explicitly on the list above; it is not sufficient for the - // underlying type to be on that list. For example, a Value of "type - // myInt64 int64" is invalid. Smaller-width integers and floats are also - // invalid. Again, this is more restrictive than the set of valid struct - // field types. - // - // A Value will have an opaque type when loading entities from an index, - // such as via a projection query. Load entities into a struct instead - // of a PropertyLoadSaver when using a projection query. - // - // A Value may also be the nil interface value; this is equivalent to - // Python's None but not directly representable by a Go struct. Loading - // a nil-valued property into a struct will set that field to the zero - // value. - Value interface{} - // NoIndex is whether the datastore cannot index this property. - NoIndex bool - // Multiple is whether the entity can have multiple properties with - // the same name. Even if a particular instance only has one property with - // a certain name, Multiple should be true if a struct would best represent - // it as a field of type []T instead of type T. - Multiple bool -} - -// ByteString is a short byte slice (up to 500 bytes) that can be indexed. -type ByteString []byte - -// PropertyLoadSaver can be converted from and to a slice of Properties. -type PropertyLoadSaver interface { - Load([]Property) error - Save() ([]Property, error) -} - -// PropertyList converts a []Property to implement PropertyLoadSaver. -type PropertyList []Property - -var ( - typeOfPropertyLoadSaver = reflect.TypeOf((*PropertyLoadSaver)(nil)).Elem() - typeOfPropertyList = reflect.TypeOf(PropertyList(nil)) -) - -// Load loads all of the provided properties into l. -// It does not first reset *l to an empty slice. -func (l *PropertyList) Load(p []Property) error { - *l = append(*l, p...) - return nil -} - -// Save saves all of l's properties as a slice or Properties. -func (l *PropertyList) Save() ([]Property, error) { - return *l, nil -} - -// validPropertyName returns whether name consists of one or more valid Go -// identifiers joined by ".". -func validPropertyName(name string) bool { - if name == "" { - return false - } - for _, s := range strings.Split(name, ".") { - if s == "" { - return false - } - first := true - for _, c := range s { - if first { - first = false - if c != '_' && !unicode.IsLetter(c) { - return false - } - } else { - if c != '_' && !unicode.IsLetter(c) && !unicode.IsDigit(c) { - return false - } - } - } - } - return true -} - -// structTag is the parsed `datastore:"name,options"` tag of a struct field. -// If a field has no tag, or the tag has an empty name, then the structTag's -// name is just the field name. A "-" name means that the datastore ignores -// that field. -type structTag struct { - name string - noIndex bool -} - -// structCodec describes how to convert a struct to and from a sequence of -// properties. -type structCodec struct { - // byIndex gives the structTag for the i'th field. - byIndex []structTag - // byName gives the field codec for the structTag with the given name. - byName map[string]fieldCodec - // hasSlice is whether a struct or any of its nested or embedded structs - // has a slice-typed field (other than []byte). - hasSlice bool - // complete is whether the structCodec is complete. An incomplete - // structCodec may be encountered when walking a recursive struct. - complete bool -} - -// fieldCodec is a struct field's index and, if that struct field's type is -// itself a struct, that substruct's structCodec. -type fieldCodec struct { - index int - substructCodec *structCodec -} - -// structCodecs collects the structCodecs that have already been calculated. -var ( - structCodecsMutex sync.Mutex - structCodecs = make(map[reflect.Type]*structCodec) -) - -// getStructCodec returns the structCodec for the given struct type. -func getStructCodec(t reflect.Type) (*structCodec, error) { - structCodecsMutex.Lock() - defer structCodecsMutex.Unlock() - return getStructCodecLocked(t) -} - -// getStructCodecLocked implements getStructCodec. The structCodecsMutex must -// be held when calling this function. -func getStructCodecLocked(t reflect.Type) (ret *structCodec, retErr error) { - c, ok := structCodecs[t] - if ok { - return c, nil - } - c = &structCodec{ - byIndex: make([]structTag, t.NumField()), - byName: make(map[string]fieldCodec), - } - - // Add c to the structCodecs map before we are sure it is good. If t is - // a recursive type, it needs to find the incomplete entry for itself in - // the map. - structCodecs[t] = c - defer func() { - if retErr != nil { - delete(structCodecs, t) - } - }() - - for i := range c.byIndex { - f := t.Field(i) - name, opts := f.Tag.Get("datastore"), "" - if i := strings.Index(name, ","); i != -1 { - name, opts = name[:i], name[i+1:] - } - if name == "" { - if !f.Anonymous { - name = f.Name - } - } else if name == "-" { - c.byIndex[i] = structTag{name: name} - continue - } else if !validPropertyName(name) { - return nil, fmt.Errorf("datastore: struct tag has invalid property name: %q", name) - } - - substructType, fIsSlice := reflect.Type(nil), false - switch f.Type.Kind() { - case reflect.Struct: - substructType = f.Type - case reflect.Slice: - if f.Type.Elem().Kind() == reflect.Struct { - substructType = f.Type.Elem() - } - fIsSlice = f.Type != typeOfByteSlice - c.hasSlice = c.hasSlice || fIsSlice - } - - if substructType != nil && substructType != typeOfTime && substructType != typeOfGeoPoint { - if name != "" { - name = name + "." - } - sub, err := getStructCodecLocked(substructType) - if err != nil { - return nil, err - } - if !sub.complete { - return nil, fmt.Errorf("datastore: recursive struct: field %q", f.Name) - } - if fIsSlice && sub.hasSlice { - return nil, fmt.Errorf( - "datastore: flattening nested structs leads to a slice of slices: field %q", f.Name) - } - c.hasSlice = c.hasSlice || sub.hasSlice - for relName := range sub.byName { - absName := name + relName - if _, ok := c.byName[absName]; ok { - return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", absName) - } - c.byName[absName] = fieldCodec{index: i, substructCodec: sub} - } - } else { - if _, ok := c.byName[name]; ok { - return nil, fmt.Errorf("datastore: struct tag has repeated property name: %q", name) - } - c.byName[name] = fieldCodec{index: i} - } - - c.byIndex[i] = structTag{ - name: name, - noIndex: opts == "noindex", - } - } - c.complete = true - return c, nil -} - -// structPLS adapts a struct to be a PropertyLoadSaver. -type structPLS struct { - v reflect.Value - codec *structCodec -} - -// newStructPLS returns a PropertyLoadSaver for the struct pointer p. -func newStructPLS(p interface{}) (PropertyLoadSaver, error) { - v := reflect.ValueOf(p) - if v.Kind() != reflect.Ptr || v.Elem().Kind() != reflect.Struct { - return nil, ErrInvalidEntityType - } - v = v.Elem() - codec, err := getStructCodec(v.Type()) - if err != nil { - return nil, err - } - return structPLS{v, codec}, nil -} - -// LoadStruct loads the properties from p to dst. -// dst must be a struct pointer. -func LoadStruct(dst interface{}, p []Property) error { - x, err := newStructPLS(dst) - if err != nil { - return err - } - return x.Load(p) -} - -// SaveStruct returns the properties from src as a slice of Properties. -// src must be a struct pointer. -func SaveStruct(src interface{}) ([]Property, error) { - x, err := newStructPLS(src) - if err != nil { - return nil, err - } - return x.Save() -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/prop_test.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/prop_test.go deleted file mode 100644 index db2e54290ee..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/prop_test.go +++ /dev/null @@ -1,559 +0,0 @@ -// Copyright 2011 Google Inc. All Rights Reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "reflect" - "testing" - "time" - - "google.golang.org/appengine" -) - -func TestValidPropertyName(t *testing.T) { - testCases := []struct { - name string - want bool - }{ - // Invalid names. - {"", false}, - {"'", false}, - {".", false}, - {"..", false}, - {".foo", false}, - {"0", false}, - {"00", false}, - {"X.X.4.X.X", false}, - {"\n", false}, - {"\x00", false}, - {"abc\xffz", false}, - {"foo.", false}, - {"foo..", false}, - {"foo..bar", false}, - {"☃", false}, - {`"`, false}, - // Valid names. - {"AB", true}, - {"Abc", true}, - {"X.X.X.X.X", true}, - {"_", true}, - {"_0", true}, - {"a", true}, - {"a_B", true}, - {"f00", true}, - {"f0o", true}, - {"fo0", true}, - {"foo", true}, - {"foo.bar", true}, - {"foo.bar.baz", true}, - {"世界", true}, - } - for _, tc := range testCases { - got := validPropertyName(tc.name) - if got != tc.want { - t.Errorf("%q: got %v, want %v", tc.name, got, tc.want) - } - } -} - -func TestStructCodec(t *testing.T) { - type oStruct struct { - O int - } - type pStruct struct { - P int - Q int - } - type rStruct struct { - R int - S pStruct - T oStruct - oStruct - } - type uStruct struct { - U int - v int - } - oStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "O"}, - }, - byName: map[string]fieldCodec{ - "O": {index: 0}, - }, - complete: true, - } - pStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "P"}, - {name: "Q"}, - }, - byName: map[string]fieldCodec{ - "P": {index: 0}, - "Q": {index: 1}, - }, - complete: true, - } - rStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "R"}, - {name: "S."}, - {name: "T."}, - {name: ""}, - }, - byName: map[string]fieldCodec{ - "R": {index: 0}, - "S.P": {index: 1, substructCodec: pStructCodec}, - "S.Q": {index: 1, substructCodec: pStructCodec}, - "T.O": {index: 2, substructCodec: oStructCodec}, - "O": {index: 3, substructCodec: oStructCodec}, - }, - complete: true, - } - uStructCodec := &structCodec{ - byIndex: []structTag{ - {name: "U"}, - {name: "v"}, - }, - byName: map[string]fieldCodec{ - "U": {index: 0}, - "v": {index: 1}, - }, - complete: true, - } - - testCases := []struct { - desc string - structValue interface{} - want *structCodec - }{ - { - "oStruct", - oStruct{}, - oStructCodec, - }, - { - "pStruct", - pStruct{}, - pStructCodec, - }, - { - "rStruct", - rStruct{}, - rStructCodec, - }, - { - "uStruct", - uStruct{}, - uStructCodec, - }, - { - "non-basic fields", - struct { - B appengine.BlobKey - K *Key - T time.Time - }{}, - &structCodec{ - byIndex: []structTag{ - {name: "B"}, - {name: "K"}, - {name: "T"}, - }, - byName: map[string]fieldCodec{ - "B": {index: 0}, - "K": {index: 1}, - "T": {index: 2}, - }, - complete: true, - }, - }, - { - "struct tags with ignored embed", - struct { - A int `datastore:"a,noindex"` - B int `datastore:"b"` - C int `datastore:",noindex"` - D int `datastore:""` - E int - I int `datastore:"-"` - J int `datastore:",noindex" json:"j"` - oStruct `datastore:"-"` - }{}, - &structCodec{ - byIndex: []structTag{ - {name: "a", noIndex: true}, - {name: "b", noIndex: false}, - {name: "C", noIndex: true}, - {name: "D", noIndex: false}, - {name: "E", noIndex: false}, - {name: "-", noIndex: false}, - {name: "J", noIndex: true}, - {name: "-", noIndex: false}, - }, - byName: map[string]fieldCodec{ - "a": {index: 0}, - "b": {index: 1}, - "C": {index: 2}, - "D": {index: 3}, - "E": {index: 4}, - "J": {index: 6}, - }, - complete: true, - }, - }, - { - "unexported fields", - struct { - A int - b int - C int `datastore:"x"` - d int `datastore:"Y"` - }{}, - &structCodec{ - byIndex: []structTag{ - {name: "A"}, - {name: "b"}, - {name: "x"}, - {name: "Y"}, - }, - byName: map[string]fieldCodec{ - "A": {index: 0}, - "b": {index: 1}, - "x": {index: 2}, - "Y": {index: 3}, - }, - complete: true, - }, - }, - { - "nested and embedded structs", - struct { - A int - B int - CC oStruct - DDD rStruct - oStruct - }{}, - &structCodec{ - byIndex: []structTag{ - {name: "A"}, - {name: "B"}, - {name: "CC."}, - {name: "DDD."}, - {name: ""}, - }, - byName: map[string]fieldCodec{ - "A": {index: 0}, - "B": {index: 1}, - "CC.O": {index: 2, substructCodec: oStructCodec}, - "DDD.R": {index: 3, substructCodec: rStructCodec}, - "DDD.S.P": {index: 3, substructCodec: rStructCodec}, - "DDD.S.Q": {index: 3, substructCodec: rStructCodec}, - "DDD.T.O": {index: 3, substructCodec: rStructCodec}, - "DDD.O": {index: 3, substructCodec: rStructCodec}, - "O": {index: 4, substructCodec: oStructCodec}, - }, - complete: true, - }, - }, - { - "struct tags with nested and embedded structs", - struct { - A int `datastore:"-"` - B int `datastore:"w"` - C oStruct `datastore:"xx"` - D rStruct `datastore:"y"` - oStruct `datastore:"z"` - }{}, - &structCodec{ - byIndex: []structTag{ - {name: "-"}, - {name: "w"}, - {name: "xx."}, - {name: "y."}, - {name: "z."}, - }, - byName: map[string]fieldCodec{ - "w": {index: 1}, - "xx.O": {index: 2, substructCodec: oStructCodec}, - "y.R": {index: 3, substructCodec: rStructCodec}, - "y.S.P": {index: 3, substructCodec: rStructCodec}, - "y.S.Q": {index: 3, substructCodec: rStructCodec}, - "y.T.O": {index: 3, substructCodec: rStructCodec}, - "y.O": {index: 3, substructCodec: rStructCodec}, - "z.O": {index: 4, substructCodec: oStructCodec}, - }, - complete: true, - }, - }, - { - "unexported nested and embedded structs", - struct { - a int - B int - c uStruct - D uStruct - uStruct - }{}, - &structCodec{ - byIndex: []structTag{ - {name: "a"}, - {name: "B"}, - {name: "c."}, - {name: "D."}, - {name: ""}, - }, - byName: map[string]fieldCodec{ - "a": {index: 0}, - "B": {index: 1}, - "c.U": {index: 2, substructCodec: uStructCodec}, - "c.v": {index: 2, substructCodec: uStructCodec}, - "D.U": {index: 3, substructCodec: uStructCodec}, - "D.v": {index: 3, substructCodec: uStructCodec}, - "U": {index: 4, substructCodec: uStructCodec}, - "v": {index: 4, substructCodec: uStructCodec}, - }, - complete: true, - }, - }, - { - "noindex nested struct", - struct { - A oStruct `datastore:",noindex"` - }{}, - &structCodec{ - byIndex: []structTag{ - {name: "A.", noIndex: true}, - }, - byName: map[string]fieldCodec{ - "A.O": {index: 0, substructCodec: oStructCodec}, - }, - complete: true, - }, - }, - } - - for _, tc := range testCases { - got, err := getStructCodec(reflect.TypeOf(tc.structValue)) - if err != nil { - t.Errorf("%s: getStructCodec: %v", tc.desc, err) - continue - } - if !reflect.DeepEqual(got, tc.want) { - t.Errorf("%s\ngot %v\nwant %v\n", tc.desc, got, tc.want) - continue - } - } -} - -func TestRepeatedPropertyName(t *testing.T) { - good := []interface{}{ - struct { - A int `datastore:"-"` - }{}, - struct { - A int `datastore:"b"` - B int - }{}, - struct { - A int - B int `datastore:"B"` - }{}, - struct { - A int `datastore:"B"` - B int `datastore:"-"` - }{}, - struct { - A int `datastore:"-"` - B int `datastore:"A"` - }{}, - struct { - A int `datastore:"B"` - B int `datastore:"A"` - }{}, - struct { - A int `datastore:"B"` - B int `datastore:"C"` - C int `datastore:"A"` - }{}, - struct { - A int `datastore:"B"` - B int `datastore:"C"` - C int `datastore:"D"` - }{}, - } - bad := []interface{}{ - struct { - A int `datastore:"B"` - B int - }{}, - struct { - A int - B int `datastore:"A"` - }{}, - struct { - A int `datastore:"C"` - B int `datastore:"C"` - }{}, - struct { - A int `datastore:"B"` - B int `datastore:"C"` - C int `datastore:"B"` - }{}, - } - testGetStructCodec(t, good, bad) -} - -func TestFlatteningNestedStructs(t *testing.T) { - type deepGood struct { - A struct { - B []struct { - C struct { - D int - } - } - } - } - type deepBad struct { - A struct { - B []struct { - C struct { - D []int - } - } - } - } - type iSay struct { - Tomato int - } - type youSay struct { - Tomato int - } - type tweedledee struct { - Dee int `datastore:"D"` - } - type tweedledum struct { - Dum int `datastore:"D"` - } - - good := []interface{}{ - struct { - X []struct { - Y string - } - }{}, - struct { - X []struct { - Y []byte - } - }{}, - struct { - P []int - X struct { - Y []int - } - }{}, - struct { - X struct { - Y []int - } - Q []int - }{}, - struct { - P []int - X struct { - Y []int - } - Q []int - }{}, - struct { - deepGood - }{}, - struct { - DG deepGood - }{}, - struct { - Foo struct { - Z int `datastore:"X"` - } `datastore:"A"` - Bar struct { - Z int `datastore:"Y"` - } `datastore:"A"` - }{}, - } - bad := []interface{}{ - struct { - X []struct { - Y []string - } - }{}, - struct { - X []struct { - Y []int - } - }{}, - struct { - deepBad - }{}, - struct { - DB deepBad - }{}, - struct { - iSay - youSay - }{}, - struct { - tweedledee - tweedledum - }{}, - struct { - Foo struct { - Z int - } `datastore:"A"` - Bar struct { - Z int - } `datastore:"A"` - }{}, - } - testGetStructCodec(t, good, bad) -} - -func testGetStructCodec(t *testing.T, good []interface{}, bad []interface{}) { - for _, x := range good { - if _, err := getStructCodec(reflect.TypeOf(x)); err != nil { - t.Errorf("type %T: got non-nil error (%s), want nil", x, err) - } - } - for _, x := range bad { - if _, err := getStructCodec(reflect.TypeOf(x)); err == nil { - t.Errorf("type %T: got nil error, want non-nil", x) - } - } -} - -func TestNilKeyIsStored(t *testing.T) { - x := struct { - K *Key - I int - }{} - p := PropertyList{} - // Save x as properties. - p1, _ := SaveStruct(&x) - p.Load(p1) - // Set x's fields to non-zero. - x.K = &Key{} - x.I = 2 - // Load x from properties. - p2, _ := p.Save() - LoadStruct(&x, p2) - // Check that x's fields were set to zero. - if x.K != nil { - t.Errorf("K field was not zero") - } - if x.I != 0 { - t.Errorf("I field was not zero") - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/query.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/query.go deleted file mode 100644 index 0448002c5ae..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/query.go +++ /dev/null @@ -1,712 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "encoding/base64" - "errors" - "fmt" - "math" - "reflect" - "strings" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - pb "google.golang.org/appengine/internal/datastore" -) - -type operator int - -const ( - lessThan operator = iota - lessEq - equal - greaterEq - greaterThan -) - -var operatorToProto = map[operator]*pb.Query_Filter_Operator{ - lessThan: pb.Query_Filter_LESS_THAN.Enum(), - lessEq: pb.Query_Filter_LESS_THAN_OR_EQUAL.Enum(), - equal: pb.Query_Filter_EQUAL.Enum(), - greaterEq: pb.Query_Filter_GREATER_THAN_OR_EQUAL.Enum(), - greaterThan: pb.Query_Filter_GREATER_THAN.Enum(), -} - -// filter is a conditional filter on query results. -type filter struct { - FieldName string - Op operator - Value interface{} -} - -type sortDirection int - -const ( - ascending sortDirection = iota - descending -) - -var sortDirectionToProto = map[sortDirection]*pb.Query_Order_Direction{ - ascending: pb.Query_Order_ASCENDING.Enum(), - descending: pb.Query_Order_DESCENDING.Enum(), -} - -// order is a sort order on query results. -type order struct { - FieldName string - Direction sortDirection -} - -// NewQuery creates a new Query for a specific entity kind. -// -// An empty kind means to return all entities, including entities created and -// managed by other App Engine features, and is called a kindless query. -// Kindless queries cannot include filters or sort orders on property values. -func NewQuery(kind string) *Query { - return &Query{ - kind: kind, - limit: -1, - } -} - -// Query represents a datastore query. -type Query struct { - kind string - ancestor *Key - filter []filter - order []order - projection []string - - distinct bool - keysOnly bool - eventual bool - limit int32 - offset int32 - start *pb.CompiledCursor - end *pb.CompiledCursor - - err error -} - -func (q *Query) clone() *Query { - x := *q - // Copy the contents of the slice-typed fields to a new backing store. - if len(q.filter) > 0 { - x.filter = make([]filter, len(q.filter)) - copy(x.filter, q.filter) - } - if len(q.order) > 0 { - x.order = make([]order, len(q.order)) - copy(x.order, q.order) - } - return &x -} - -// Ancestor returns a derivative query with an ancestor filter. -// The ancestor should not be nil. -func (q *Query) Ancestor(ancestor *Key) *Query { - q = q.clone() - if ancestor == nil { - q.err = errors.New("datastore: nil query ancestor") - return q - } - q.ancestor = ancestor - return q -} - -// EventualConsistency returns a derivative query that returns eventually -// consistent results. -// It only has an effect on ancestor queries. -func (q *Query) EventualConsistency() *Query { - q = q.clone() - q.eventual = true - return q -} - -// Filter returns a derivative query with a field-based filter. -// The filterStr argument must be a field name followed by optional space, -// followed by an operator, one of ">", "<", ">=", "<=", or "=". -// Fields are compared against the provided value using the operator. -// Multiple filters are AND'ed together. -func (q *Query) Filter(filterStr string, value interface{}) *Query { - q = q.clone() - filterStr = strings.TrimSpace(filterStr) - if len(filterStr) < 1 { - q.err = errors.New("datastore: invalid filter: " + filterStr) - return q - } - f := filter{ - FieldName: strings.TrimRight(filterStr, " ><=!"), - Value: value, - } - switch op := strings.TrimSpace(filterStr[len(f.FieldName):]); op { - case "<=": - f.Op = lessEq - case ">=": - f.Op = greaterEq - case "<": - f.Op = lessThan - case ">": - f.Op = greaterThan - case "=": - f.Op = equal - default: - q.err = fmt.Errorf("datastore: invalid operator %q in filter %q", op, filterStr) - return q - } - q.filter = append(q.filter, f) - return q -} - -// Order returns a derivative query with a field-based sort order. Orders are -// applied in the order they are added. The default order is ascending; to sort -// in descending order prefix the fieldName with a minus sign (-). -func (q *Query) Order(fieldName string) *Query { - q = q.clone() - fieldName = strings.TrimSpace(fieldName) - o := order{ - Direction: ascending, - FieldName: fieldName, - } - if strings.HasPrefix(fieldName, "-") { - o.Direction = descending - o.FieldName = strings.TrimSpace(fieldName[1:]) - } else if strings.HasPrefix(fieldName, "+") { - q.err = fmt.Errorf("datastore: invalid order: %q", fieldName) - return q - } - if len(o.FieldName) == 0 { - q.err = errors.New("datastore: empty order") - return q - } - q.order = append(q.order, o) - return q -} - -// Project returns a derivative query that yields only the given fields. It -// cannot be used with KeysOnly. -func (q *Query) Project(fieldNames ...string) *Query { - q = q.clone() - q.projection = append([]string(nil), fieldNames...) - return q -} - -// Distinct returns a derivative query that yields de-duplicated entities with -// respect to the set of projected fields. It is only used for projection -// queries. -func (q *Query) Distinct() *Query { - q = q.clone() - q.distinct = true - return q -} - -// KeysOnly returns a derivative query that yields only keys, not keys and -// entities. It cannot be used with projection queries. -func (q *Query) KeysOnly() *Query { - q = q.clone() - q.keysOnly = true - return q -} - -// Limit returns a derivative query that has a limit on the number of results -// returned. A negative value means unlimited. -func (q *Query) Limit(limit int) *Query { - q = q.clone() - if limit < math.MinInt32 || limit > math.MaxInt32 { - q.err = errors.New("datastore: query limit overflow") - return q - } - q.limit = int32(limit) - return q -} - -// Offset returns a derivative query that has an offset of how many keys to -// skip over before returning results. A negative value is invalid. -func (q *Query) Offset(offset int) *Query { - q = q.clone() - if offset < 0 { - q.err = errors.New("datastore: negative query offset") - return q - } - if offset > math.MaxInt32 { - q.err = errors.New("datastore: query offset overflow") - return q - } - q.offset = int32(offset) - return q -} - -// Start returns a derivative query with the given start point. -func (q *Query) Start(c Cursor) *Query { - q = q.clone() - if c.cc == nil { - q.err = errors.New("datastore: invalid cursor") - return q - } - q.start = c.cc - return q -} - -// End returns a derivative query with the given end point. -func (q *Query) End(c Cursor) *Query { - q = q.clone() - if c.cc == nil { - q.err = errors.New("datastore: invalid cursor") - return q - } - q.end = c.cc - return q -} - -// toProto converts the query to a protocol buffer. -func (q *Query) toProto(dst *pb.Query, appID string) error { - if len(q.projection) != 0 && q.keysOnly { - return errors.New("datastore: query cannot both project and be keys-only") - } - dst.Reset() - dst.App = proto.String(appID) - if q.kind != "" { - dst.Kind = proto.String(q.kind) - } - if q.ancestor != nil { - dst.Ancestor = keyToProto(appID, q.ancestor) - if q.eventual { - dst.Strong = proto.Bool(false) - } - } - if q.projection != nil { - dst.PropertyName = q.projection - if q.distinct { - dst.GroupByPropertyName = q.projection - } - } - if q.keysOnly { - dst.KeysOnly = proto.Bool(true) - dst.RequirePerfectPlan = proto.Bool(true) - } - for _, qf := range q.filter { - if qf.FieldName == "" { - return errors.New("datastore: empty query filter field name") - } - p, errStr := valueToProto(appID, qf.FieldName, reflect.ValueOf(qf.Value), false) - if errStr != "" { - return errors.New("datastore: bad query filter value type: " + errStr) - } - xf := &pb.Query_Filter{ - Op: operatorToProto[qf.Op], - Property: []*pb.Property{p}, - } - if xf.Op == nil { - return errors.New("datastore: unknown query filter operator") - } - dst.Filter = append(dst.Filter, xf) - } - for _, qo := range q.order { - if qo.FieldName == "" { - return errors.New("datastore: empty query order field name") - } - xo := &pb.Query_Order{ - Property: proto.String(qo.FieldName), - Direction: sortDirectionToProto[qo.Direction], - } - if xo.Direction == nil { - return errors.New("datastore: unknown query order direction") - } - dst.Order = append(dst.Order, xo) - } - if q.limit >= 0 { - dst.Limit = proto.Int32(q.limit) - } - if q.offset != 0 { - dst.Offset = proto.Int32(q.offset) - } - dst.CompiledCursor = q.start - dst.EndCompiledCursor = q.end - dst.Compile = proto.Bool(true) - return nil -} - -// Count returns the number of results for the query. -func (q *Query) Count(c appengine.Context) (int, error) { - // Check that the query is well-formed. - if q.err != nil { - return 0, q.err - } - - // Run a copy of the query, with keysOnly true (if we're not a projection, - // since the two are incompatible), and an adjusted offset. We also set the - // limit to zero, as we don't want any actual entity data, just the number - // of skipped results. - newQ := q.clone() - newQ.keysOnly = len(newQ.projection) == 0 - newQ.limit = 0 - if q.limit < 0 { - // If the original query was unlimited, set the new query's offset to maximum. - newQ.offset = math.MaxInt32 - } else { - newQ.offset = q.offset + q.limit - if newQ.offset < 0 { - // Do the best we can, in the presence of overflow. - newQ.offset = math.MaxInt32 - } - } - req := &pb.Query{} - if err := newQ.toProto(req, c.FullyQualifiedAppID()); err != nil { - return 0, err - } - res := &pb.QueryResult{} - if err := c.Call("datastore_v3", "RunQuery", req, res, nil); err != nil { - return 0, err - } - - // n is the count we will return. For example, suppose that our original - // query had an offset of 4 and a limit of 2008: the count will be 2008, - // provided that there are at least 2012 matching entities. However, the - // RPCs will only skip 1000 results at a time. The RPC sequence is: - // call RunQuery with (offset, limit) = (2012, 0) // 2012 == newQ.offset - // response has (skippedResults, moreResults) = (1000, true) - // n += 1000 // n == 1000 - // call Next with (offset, limit) = (1012, 0) // 1012 == newQ.offset - n - // response has (skippedResults, moreResults) = (1000, true) - // n += 1000 // n == 2000 - // call Next with (offset, limit) = (12, 0) // 12 == newQ.offset - n - // response has (skippedResults, moreResults) = (12, false) - // n += 12 // n == 2012 - // // exit the loop - // n -= 4 // n == 2008 - var n int32 - for { - // The QueryResult should have no actual entity data, just skipped results. - if len(res.Result) != 0 { - return 0, errors.New("datastore: internal error: Count request returned too much data") - } - n += res.GetSkippedResults() - if !res.GetMoreResults() { - break - } - if err := callNext(c, res, newQ.offset-n, 0); err != nil { - return 0, err - } - } - n -= q.offset - if n < 0 { - // If the offset was greater than the number of matching entities, - // return 0 instead of negative. - n = 0 - } - return int(n), nil -} - -// callNext issues a datastore_v3/Next RPC to advance a cursor, such as that -// returned by a query with more results. -func callNext(c appengine.Context, res *pb.QueryResult, offset, limit int32) error { - if res.Cursor == nil { - return errors.New("datastore: internal error: server did not return a cursor") - } - req := &pb.NextRequest{ - Cursor: res.Cursor, - } - if limit >= 0 { - req.Count = proto.Int32(limit) - } - if offset != 0 { - req.Offset = proto.Int32(offset) - } - if res.CompiledCursor != nil { - req.Compile = proto.Bool(true) - } - res.Reset() - return c.Call("datastore_v3", "Next", req, res, nil) -} - -// GetAll runs the query in the given context and returns all keys that match -// that query, as well as appending the values to dst. -// -// dst must have type *[]S or *[]*S or *[]P, for some struct type S or some non- -// interface, non-pointer type P such that P or *P implements PropertyLoadSaver. -// -// As a special case, *PropertyList is an invalid type for dst, even though a -// PropertyList is a slice of structs. It is treated as invalid to avoid being -// mistakenly passed when *[]PropertyList was intended. -// -// The keys returned by GetAll will be in a 1-1 correspondence with the entities -// added to dst. -// -// If q is a ``keys-only'' query, GetAll ignores dst and only returns the keys. -func (q *Query) GetAll(c appengine.Context, dst interface{}) ([]*Key, error) { - var ( - dv reflect.Value - mat multiArgType - elemType reflect.Type - errFieldMismatch error - ) - if !q.keysOnly { - dv = reflect.ValueOf(dst) - if dv.Kind() != reflect.Ptr || dv.IsNil() { - return nil, ErrInvalidEntityType - } - dv = dv.Elem() - mat, elemType = checkMultiArg(dv) - if mat == multiArgTypeInvalid || mat == multiArgTypeInterface { - return nil, ErrInvalidEntityType - } - } - - var keys []*Key - for t := q.Run(c); ; { - k, e, err := t.next() - if err == Done { - break - } - if err != nil { - return keys, err - } - if !q.keysOnly { - ev := reflect.New(elemType) - if elemType.Kind() == reflect.Map { - // This is a special case. The zero values of a map type are - // not immediately useful; they have to be make'd. - // - // Funcs and channels are similar, in that a zero value is not useful, - // but even a freshly make'd channel isn't useful: there's no fixed - // channel buffer size that is always going to be large enough, and - // there's no goroutine to drain the other end. Theoretically, these - // types could be supported, for example by sniffing for a constructor - // method or requiring prior registration, but for now it's not a - // frequent enough concern to be worth it. Programmers can work around - // it by explicitly using Iterator.Next instead of the Query.GetAll - // convenience method. - x := reflect.MakeMap(elemType) - ev.Elem().Set(x) - } - if err = loadEntity(ev.Interface(), e); err != nil { - if _, ok := err.(*ErrFieldMismatch); ok { - // We continue loading entities even in the face of field mismatch errors. - // If we encounter any other error, that other error is returned. Otherwise, - // an ErrFieldMismatch is returned. - errFieldMismatch = err - } else { - return keys, err - } - } - if mat != multiArgTypeStructPtr { - ev = ev.Elem() - } - dv.Set(reflect.Append(dv, ev)) - } - keys = append(keys, k) - } - return keys, errFieldMismatch -} - -// Run runs the query in the given context. -func (q *Query) Run(c appengine.Context) *Iterator { - if q.err != nil { - return &Iterator{err: q.err} - } - t := &Iterator{ - c: c, - limit: q.limit, - q: q, - prevCC: q.start, - } - var req pb.Query - if err := q.toProto(&req, c.FullyQualifiedAppID()); err != nil { - t.err = err - return t - } - if err := c.Call("datastore_v3", "RunQuery", &req, &t.res, nil); err != nil { - t.err = err - return t - } - offset := q.offset - t.res.GetSkippedResults() - for offset > 0 && t.res.GetMoreResults() { - t.prevCC = t.res.CompiledCursor - if err := callNext(t.c, &t.res, offset, t.limit); err != nil { - t.err = err - break - } - skip := t.res.GetSkippedResults() - if skip < 0 { - t.err = errors.New("datastore: internal error: negative number of skipped_results") - break - } - offset -= skip - } - if offset < 0 { - t.err = errors.New("datastore: internal error: query offset was overshot") - } - return t -} - -// Iterator is the result of running a query. -type Iterator struct { - c appengine.Context - err error - // res is the result of the most recent RunQuery or Next API call. - res pb.QueryResult - // i is how many elements of res.Result we have iterated over. - i int - // limit is the limit on the number of results this iterator should return. - // A negative value means unlimited. - limit int32 - // q is the original query which yielded this iterator. - q *Query - // prevCC is the compiled cursor that marks the end of the previous batch - // of results. - prevCC *pb.CompiledCursor -} - -// Done is returned when a query iteration has completed. -var Done = errors.New("datastore: query has no more results") - -// Next returns the key of the next result. When there are no more results, -// Done is returned as the error. -// -// If the query is not keys only and dst is non-nil, it also loads the entity -// stored for that key into the struct pointer or PropertyLoadSaver dst, with -// the same semantics and possible errors as for the Get function. -func (t *Iterator) Next(dst interface{}) (*Key, error) { - k, e, err := t.next() - if err != nil { - return nil, err - } - if dst != nil && !t.q.keysOnly { - err = loadEntity(dst, e) - } - return k, err -} - -func (t *Iterator) next() (*Key, *pb.EntityProto, error) { - if t.err != nil { - return nil, nil, t.err - } - - // Issue datastore_v3/Next RPCs as necessary. - for t.i == len(t.res.Result) { - if !t.res.GetMoreResults() { - t.err = Done - return nil, nil, t.err - } - t.prevCC = t.res.CompiledCursor - if err := callNext(t.c, &t.res, 0, t.limit); err != nil { - t.err = err - return nil, nil, t.err - } - if t.res.GetSkippedResults() != 0 { - t.err = errors.New("datastore: internal error: iterator has skipped results") - return nil, nil, t.err - } - t.i = 0 - if t.limit >= 0 { - t.limit -= int32(len(t.res.Result)) - if t.limit < 0 { - t.err = errors.New("datastore: internal error: query returned more results than the limit") - return nil, nil, t.err - } - } - } - - // Extract the key from the t.i'th element of t.res.Result. - e := t.res.Result[t.i] - t.i++ - if e.Key == nil { - return nil, nil, errors.New("datastore: internal error: server did not return a key") - } - k, err := protoToKey(e.Key) - if err != nil || k.Incomplete() { - return nil, nil, errors.New("datastore: internal error: server returned an invalid key") - } - return k, e, nil -} - -// Cursor returns a cursor for the iterator's current location. -func (t *Iterator) Cursor() (Cursor, error) { - if t.err != nil && t.err != Done { - return Cursor{}, t.err - } - // If we are at either end of the current batch of results, - // return the compiled cursor at that end. - skipped := t.res.GetSkippedResults() - if t.i == 0 && skipped == 0 { - if t.prevCC == nil { - // A nil pointer (of type *pb.CompiledCursor) means no constraint: - // passing it as the end cursor of a new query means unlimited results - // (glossing over the integer limit parameter for now). - // A non-nil pointer to an empty pb.CompiledCursor means the start: - // passing it as the end cursor of a new query means 0 results. - // If prevCC was nil, then the original query had no start cursor, but - // Iterator.Cursor should return "the start" instead of unlimited. - return Cursor{&zeroCC}, nil - } - return Cursor{t.prevCC}, nil - } - if t.i == len(t.res.Result) { - return Cursor{t.res.CompiledCursor}, nil - } - // Otherwise, re-run the query offset to this iterator's position, starting from - // the most recent compiled cursor. This is done on a best-effort basis, as it - // is racy; if a concurrent process has added or removed entities, then the - // cursor returned may be inconsistent. - q := t.q.clone() - q.start = t.prevCC - q.offset = skipped + int32(t.i) - q.limit = 0 - q.keysOnly = len(q.projection) == 0 - t1 := q.Run(t.c) - _, _, err := t1.next() - if err != Done { - if err == nil { - err = fmt.Errorf("datastore: internal error: zero-limit query did not have zero results") - } - return Cursor{}, err - } - return Cursor{t1.res.CompiledCursor}, nil -} - -var zeroCC pb.CompiledCursor - -// Cursor is an iterator's position. It can be converted to and from an opaque -// string. A cursor can be used from different HTTP requests, but only with a -// query with the same kind, ancestor, filter and order constraints. -type Cursor struct { - cc *pb.CompiledCursor -} - -// String returns a base-64 string representation of a cursor. -func (c Cursor) String() string { - if c.cc == nil { - return "" - } - b, err := proto.Marshal(c.cc) - if err != nil { - // The only way to construct a Cursor with a non-nil cc field is to - // unmarshal from the byte representation. We panic if the unmarshal - // succeeds but the marshaling of the unchanged protobuf value fails. - panic(fmt.Sprintf("datastore: internal error: malformed cursor: %v", err)) - } - return strings.TrimRight(base64.URLEncoding.EncodeToString(b), "=") -} - -// Decode decodes a cursor from its base-64 string representation. -func DecodeCursor(s string) (Cursor, error) { - if s == "" { - return Cursor{&zeroCC}, nil - } - if n := len(s) % 4; n != 0 { - s += strings.Repeat("=", 4-n) - } - b, err := base64.URLEncoding.DecodeString(s) - if err != nil { - return Cursor{}, err - } - cc := &pb.CompiledCursor{} - if err := proto.Unmarshal(b, cc); err != nil { - return Cursor{}, err - } - return Cursor{cc}, nil -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/query_test.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/query_test.go deleted file mode 100644 index b6a858b669a..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/query_test.go +++ /dev/null @@ -1,580 +0,0 @@ -// Copyright 2011 Google Inc. All Rights Reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "errors" - "fmt" - "reflect" - "strings" - "testing" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal/aetesting" - pb "google.golang.org/appengine/internal/datastore" -) - -var ( - path1 = &pb.Path{ - Element: []*pb.Path_Element{ - { - Type: proto.String("Gopher"), - Id: proto.Int64(6), - }, - }, - } - path2 = &pb.Path{ - Element: []*pb.Path_Element{ - { - Type: proto.String("Gopher"), - Id: proto.Int64(6), - }, - { - Type: proto.String("Gopher"), - Id: proto.Int64(8), - }, - }, - } -) - -func fakeRunQuery(in *pb.Query, out *pb.QueryResult) error { - expectedIn := &pb.Query{ - App: proto.String("dev~fake-app"), - Kind: proto.String("Gopher"), - Compile: proto.Bool(true), - } - if !proto.Equal(in, expectedIn) { - return fmt.Errorf("unsupported argument: got %v want %v", in, expectedIn) - } - *out = pb.QueryResult{ - Result: []*pb.EntityProto{ - { - Key: &pb.Reference{ - App: proto.String("s~test-app"), - Path: path1, - }, - EntityGroup: path1, - Property: []*pb.Property{ - { - Meaning: pb.Property_TEXT.Enum(), - Name: proto.String("Name"), - Value: &pb.PropertyValue{ - StringValue: proto.String("George"), - }, - }, - { - Name: proto.String("Height"), - Value: &pb.PropertyValue{ - Int64Value: proto.Int64(32), - }, - }, - }, - }, - { - Key: &pb.Reference{ - App: proto.String("s~test-app"), - Path: path2, - }, - EntityGroup: path1, // ancestor is George - Property: []*pb.Property{ - { - Meaning: pb.Property_TEXT.Enum(), - Name: proto.String("Name"), - Value: &pb.PropertyValue{ - StringValue: proto.String("Rufus"), - }, - }, - // No height for Rufus. - }, - }, - }, - MoreResults: proto.Bool(false), - } - return nil -} - -type StructThatImplementsPLS struct{} - -func (StructThatImplementsPLS) Load(p []Property) error { return nil } -func (StructThatImplementsPLS) Save() ([]Property, error) { return nil, nil } - -var _ PropertyLoadSaver = StructThatImplementsPLS{} - -type StructPtrThatImplementsPLS struct{} - -func (*StructPtrThatImplementsPLS) Load(p []Property) error { return nil } -func (*StructPtrThatImplementsPLS) Save() ([]Property, error) { return nil, nil } - -var _ PropertyLoadSaver = &StructPtrThatImplementsPLS{} - -type PropertyMap map[string]Property - -func (m PropertyMap) Load(props []Property) error { - for _, p := range props { - if p.Multiple { - return errors.New("PropertyMap does not support multiple properties") - } - m[p.Name] = p - } - return nil -} - -func (m PropertyMap) Save() ([]Property, error) { - props := make([]Property, 0, len(m)) - for _, p := range m { - if p.Multiple { - return nil, errors.New("PropertyMap does not support multiple properties") - } - props = append(props, p) - } - return props, nil -} - -var _ PropertyLoadSaver = PropertyMap{} - -type Gopher struct { - Name string - Height int -} - -// typeOfEmptyInterface is the type of interface{}, but we can't use -// reflect.TypeOf((interface{})(nil)) directly because TypeOf takes an -// interface{}. -var typeOfEmptyInterface = reflect.TypeOf((*interface{})(nil)).Elem() - -func TestCheckMultiArg(t *testing.T) { - testCases := []struct { - v interface{} - mat multiArgType - elemType reflect.Type - }{ - // Invalid cases. - {nil, multiArgTypeInvalid, nil}, - {Gopher{}, multiArgTypeInvalid, nil}, - {&Gopher{}, multiArgTypeInvalid, nil}, - {PropertyList{}, multiArgTypeInvalid, nil}, // This is a special case. - {PropertyMap{}, multiArgTypeInvalid, nil}, - {[]*PropertyList(nil), multiArgTypeInvalid, nil}, - {[]*PropertyMap(nil), multiArgTypeInvalid, nil}, - {[]**Gopher(nil), multiArgTypeInvalid, nil}, - {[]*interface{}(nil), multiArgTypeInvalid, nil}, - // Valid cases. - { - []PropertyList(nil), - multiArgTypePropertyLoadSaver, - reflect.TypeOf(PropertyList{}), - }, - { - []PropertyMap(nil), - multiArgTypePropertyLoadSaver, - reflect.TypeOf(PropertyMap{}), - }, - { - []StructThatImplementsPLS(nil), - multiArgTypePropertyLoadSaver, - reflect.TypeOf(StructThatImplementsPLS{}), - }, - { - []StructPtrThatImplementsPLS(nil), - multiArgTypePropertyLoadSaver, - reflect.TypeOf(StructPtrThatImplementsPLS{}), - }, - { - []Gopher(nil), - multiArgTypeStruct, - reflect.TypeOf(Gopher{}), - }, - { - []*Gopher(nil), - multiArgTypeStructPtr, - reflect.TypeOf(Gopher{}), - }, - { - []interface{}(nil), - multiArgTypeInterface, - typeOfEmptyInterface, - }, - } - for _, tc := range testCases { - mat, elemType := checkMultiArg(reflect.ValueOf(tc.v)) - if mat != tc.mat || elemType != tc.elemType { - t.Errorf("checkMultiArg(%T): got %v, %v want %v, %v", - tc.v, mat, elemType, tc.mat, tc.elemType) - } - } -} - -func TestSimpleQuery(t *testing.T) { - struct1 := Gopher{Name: "George", Height: 32} - struct2 := Gopher{Name: "Rufus"} - pList1 := PropertyList{ - { - Name: "Name", - Value: "George", - }, - { - Name: "Height", - Value: int64(32), - }, - } - pList2 := PropertyList{ - { - Name: "Name", - Value: "Rufus", - }, - } - pMap1 := PropertyMap{ - "Name": Property{ - Name: "Name", - Value: "George", - }, - "Height": Property{ - Name: "Height", - Value: int64(32), - }, - } - pMap2 := PropertyMap{ - "Name": Property{ - Name: "Name", - Value: "Rufus", - }, - } - - testCases := []struct { - dst interface{} - want interface{} - }{ - // The destination must have type *[]P, *[]S or *[]*S, for some non-interface - // type P such that *P implements PropertyLoadSaver, or for some struct type S. - {new([]Gopher), &[]Gopher{struct1, struct2}}, - {new([]*Gopher), &[]*Gopher{&struct1, &struct2}}, - {new([]PropertyList), &[]PropertyList{pList1, pList2}}, - {new([]PropertyMap), &[]PropertyMap{pMap1, pMap2}}, - - // Any other destination type is invalid. - {0, nil}, - {Gopher{}, nil}, - {PropertyList{}, nil}, - {PropertyMap{}, nil}, - {[]int{}, nil}, - {[]Gopher{}, nil}, - {[]PropertyList{}, nil}, - {new(int), nil}, - {new(Gopher), nil}, - {new(PropertyList), nil}, // This is a special case. - {new(PropertyMap), nil}, - {new([]int), nil}, - {new([]map[int]int), nil}, - {new([]map[string]Property), nil}, - {new([]map[string]interface{}), nil}, - {new([]*int), nil}, - {new([]*map[int]int), nil}, - {new([]*map[string]Property), nil}, - {new([]*map[string]interface{}), nil}, - {new([]**Gopher), nil}, - {new([]*PropertyList), nil}, - {new([]*PropertyMap), nil}, - } - for _, tc := range testCases { - nCall := 0 - c := aetesting.FakeSingleContext(t, "datastore_v3", "RunQuery", func(in *pb.Query, out *pb.QueryResult) error { - nCall++ - return fakeRunQuery(in, out) - }) - - var ( - expectedErr error - expectedNCall int - ) - if tc.want == nil { - expectedErr = ErrInvalidEntityType - } else { - expectedNCall = 1 - } - keys, err := NewQuery("Gopher").GetAll(c, tc.dst) - if err != expectedErr { - t.Errorf("dst type %T: got error %v, want %v", tc.dst, err, expectedErr) - continue - } - if nCall != expectedNCall { - t.Errorf("dst type %T: Context.Call was called an incorrect number of times: got %d want %d", tc.dst, nCall, expectedNCall) - continue - } - if err != nil { - continue - } - - key1 := NewKey(c, "Gopher", "", 6, nil) - expectedKeys := []*Key{ - key1, - NewKey(c, "Gopher", "", 8, key1), - } - if l1, l2 := len(keys), len(expectedKeys); l1 != l2 { - t.Errorf("dst type %T: got %d keys, want %d keys", tc.dst, l1, l2) - continue - } - for i, key := range keys { - if key.AppID() != "s~test-app" { - t.Errorf(`dst type %T: Key #%d's AppID = %q, want "s~test-app"`, tc.dst, i, key.AppID()) - continue - } - if !keysEqual(key, expectedKeys[i]) { - t.Errorf("dst type %T: got key #%d %v, want %v", tc.dst, i, key, expectedKeys[i]) - continue - } - } - - if !reflect.DeepEqual(tc.dst, tc.want) { - t.Errorf("dst type %T: Entities got %+v, want %+v", tc.dst, tc.dst, tc.want) - continue - } - } -} - -// keysEqual is like (*Key).Equal, but ignores the App ID. -func keysEqual(a, b *Key) bool { - for a != nil && b != nil { - if a.Kind() != b.Kind() || a.StringID() != b.StringID() || a.IntID() != b.IntID() { - return false - } - a, b = a.Parent(), b.Parent() - } - return a == b -} - -func TestQueriesAreImmutable(t *testing.T) { - // Test that deriving q2 from q1 does not modify q1. - q0 := NewQuery("foo") - q1 := NewQuery("foo") - q2 := q1.Offset(2) - if !reflect.DeepEqual(q0, q1) { - t.Errorf("q0 and q1 were not equal") - } - if reflect.DeepEqual(q1, q2) { - t.Errorf("q1 and q2 were equal") - } - - // Test that deriving from q4 twice does not conflict, even though - // q4 has a long list of order clauses. This tests that the arrays - // backed by a query's slice of orders are not shared. - f := func() *Query { - q := NewQuery("bar") - // 47 is an ugly number that is unlikely to be near a re-allocation - // point in repeated append calls. For example, it's not near a power - // of 2 or a multiple of 10. - for i := 0; i < 47; i++ { - q = q.Order(fmt.Sprintf("x%d", i)) - } - return q - } - q3 := f().Order("y") - q4 := f() - q5 := q4.Order("y") - q6 := q4.Order("z") - if !reflect.DeepEqual(q3, q5) { - t.Errorf("q3 and q5 were not equal") - } - if reflect.DeepEqual(q5, q6) { - t.Errorf("q5 and q6 were equal") - } -} - -func TestFilterParser(t *testing.T) { - testCases := []struct { - filterStr string - wantOK bool - wantFieldName string - wantOp operator - }{ - // Supported ops. - {"x<", true, "x", lessThan}, - {"x <", true, "x", lessThan}, - {"x <", true, "x", lessThan}, - {" x < ", true, "x", lessThan}, - {"x <=", true, "x", lessEq}, - {"x =", true, "x", equal}, - {"x >=", true, "x", greaterEq}, - {"x >", true, "x", greaterThan}, - {"in >", true, "in", greaterThan}, - {"in>", true, "in", greaterThan}, - // Valid but (currently) unsupported ops. - {"x!=", false, "", 0}, - {"x !=", false, "", 0}, - {" x != ", false, "", 0}, - {"x IN", false, "", 0}, - {"x in", false, "", 0}, - // Invalid ops. - {"x EQ", false, "", 0}, - {"x lt", false, "", 0}, - {"x <>", false, "", 0}, - {"x >>", false, "", 0}, - {"x ==", false, "", 0}, - {"x =<", false, "", 0}, - {"x =>", false, "", 0}, - {"x !", false, "", 0}, - {"x ", false, "", 0}, - {"x", false, "", 0}, - } - for _, tc := range testCases { - q := NewQuery("foo").Filter(tc.filterStr, 42) - if ok := q.err == nil; ok != tc.wantOK { - t.Errorf("%q: ok=%t, want %t", tc.filterStr, ok, tc.wantOK) - continue - } - if !tc.wantOK { - continue - } - if len(q.filter) != 1 { - t.Errorf("%q: len=%d, want %d", tc.filterStr, len(q.filter), 1) - continue - } - got, want := q.filter[0], filter{tc.wantFieldName, tc.wantOp, 42} - if got != want { - t.Errorf("%q: got %v, want %v", tc.filterStr, got, want) - continue - } - } -} - -func TestQueryToProto(t *testing.T) { - // The context is required to make Keys for the test cases. - var got *pb.Query - NoErr := errors.New("No error") - c := aetesting.FakeSingleContext(t, "datastore_v3", "RunQuery", func(in *pb.Query, out *pb.QueryResult) error { - got = in - return NoErr // return a non-nil error so Run doesn't keep going. - }) - - testCases := []struct { - desc string - query *Query - want *pb.Query - err string - }{ - { - desc: "empty", - query: NewQuery(""), - want: &pb.Query{}, - }, - { - desc: "standard query", - query: NewQuery("kind").Order("-I").Filter("I >", 17).Filter("U =", "Dave").Limit(7).Offset(42), - want: &pb.Query{ - Kind: proto.String("kind"), - Filter: []*pb.Query_Filter{ - { - Op: pb.Query_Filter_GREATER_THAN.Enum(), - Property: []*pb.Property{ - { - Name: proto.String("I"), - Value: &pb.PropertyValue{Int64Value: proto.Int64(17)}, - Multiple: proto.Bool(false), - }, - }, - }, - { - Op: pb.Query_Filter_EQUAL.Enum(), - Property: []*pb.Property{ - { - Name: proto.String("U"), - Value: &pb.PropertyValue{StringValue: proto.String("Dave")}, - Multiple: proto.Bool(false), - }, - }, - }, - }, - Order: []*pb.Query_Order{ - { - Property: proto.String("I"), - Direction: pb.Query_Order_DESCENDING.Enum(), - }, - }, - Limit: proto.Int32(7), - Offset: proto.Int32(42), - }, - }, - { - desc: "ancestor", - query: NewQuery("").Ancestor(NewKey(c, "kind", "Mummy", 0, nil)), - want: &pb.Query{ - Ancestor: &pb.Reference{ - App: proto.String("dev~fake-app"), - Path: &pb.Path{ - Element: []*pb.Path_Element{{Type: proto.String("kind"), Name: proto.String("Mummy")}}, - }, - }, - }, - }, - { - desc: "projection", - query: NewQuery("").Project("A", "B"), - want: &pb.Query{ - PropertyName: []string{"A", "B"}, - }, - }, - { - desc: "projection with distinct", - query: NewQuery("").Project("A", "B").Distinct(), - want: &pb.Query{ - PropertyName: []string{"A", "B"}, - GroupByPropertyName: []string{"A", "B"}, - }, - }, - { - desc: "keys only", - query: NewQuery("").KeysOnly(), - want: &pb.Query{ - KeysOnly: proto.Bool(true), - RequirePerfectPlan: proto.Bool(true), - }, - }, - { - desc: "empty filter", - query: NewQuery("kind").Filter("=", 17), - err: "empty query filter field nam", - }, - { - desc: "bad filter type", - query: NewQuery("kind").Filter("M =", map[string]bool{}), - err: "bad query filter value type", - }, - { - desc: "bad filter operator", - query: NewQuery("kind").Filter("I <<=", 17), - err: `invalid operator "<<=" in filter "I <<="`, - }, - { - desc: "empty order", - query: NewQuery("kind").Order(""), - err: "empty order", - }, - { - desc: "bad order direction", - query: NewQuery("kind").Order("+I"), - err: `invalid order: "+I`, - }, - } - - for _, tt := range testCases { - got = nil - if _, err := tt.query.Run(c).Next(nil); err != NoErr { - if tt.err == "" || !strings.Contains(err.Error(), tt.err) { - t.Errorf("%s: error %v, want %q", tt.desc, err, tt.err) - } - continue - } - if tt.err != "" { - t.Errorf("%s: no error, want %q", tt.desc, tt.err) - continue - } - // Fields that are common to all protos. - tt.want.App = proto.String("dev~fake-app") - tt.want.Compile = proto.Bool(true) - if !proto.Equal(got, tt.want) { - t.Errorf("%s:\ngot %v\nwant %v", tt.desc, got, tt.want) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/save.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/save.go deleted file mode 100644 index 6aeffb6316c..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/save.go +++ /dev/null @@ -1,300 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "errors" - "fmt" - "math" - "reflect" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - pb "google.golang.org/appengine/internal/datastore" -) - -func toUnixMicro(t time.Time) int64 { - // We cannot use t.UnixNano() / 1e3 because we want to handle times more than - // 2^63 nanoseconds (which is about 292 years) away from 1970, and those cannot - // be represented in the numerator of a single int64 divide. - return t.Unix()*1e6 + int64(t.Nanosecond()/1e3) -} - -func fromUnixMicro(t int64) time.Time { - return time.Unix(t/1e6, (t%1e6)*1e3) -} - -var ( - minTime = time.Unix(int64(math.MinInt64)/1e6, (int64(math.MinInt64)%1e6)*1e3) - maxTime = time.Unix(int64(math.MaxInt64)/1e6, (int64(math.MaxInt64)%1e6)*1e3) -) - -// valueToProto converts a named value to a newly allocated Property. -// The returned error string is empty on success. -func valueToProto(defaultAppID, name string, v reflect.Value, multiple bool) (p *pb.Property, errStr string) { - var ( - pv pb.PropertyValue - unsupported bool - ) - switch v.Kind() { - case reflect.Invalid: - // No-op. - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - pv.Int64Value = proto.Int64(v.Int()) - case reflect.Bool: - pv.BooleanValue = proto.Bool(v.Bool()) - case reflect.String: - pv.StringValue = proto.String(v.String()) - case reflect.Float32, reflect.Float64: - pv.DoubleValue = proto.Float64(v.Float()) - case reflect.Ptr: - if k, ok := v.Interface().(*Key); ok { - if k != nil { - pv.Referencevalue = keyToReferenceValue(defaultAppID, k) - } - } else { - unsupported = true - } - case reflect.Struct: - switch t := v.Interface().(type) { - case time.Time: - if t.Before(minTime) || t.After(maxTime) { - return nil, "time value out of range" - } - pv.Int64Value = proto.Int64(toUnixMicro(t)) - case appengine.GeoPoint: - if !t.Valid() { - return nil, "invalid GeoPoint value" - } - // NOTE: Strangely, latitude maps to X, longitude to Y. - pv.Pointvalue = &pb.PropertyValue_PointValue{X: &t.Lat, Y: &t.Lng} - default: - unsupported = true - } - case reflect.Slice: - if b, ok := v.Interface().([]byte); ok { - pv.StringValue = proto.String(string(b)) - } else { - // nvToProto should already catch slice values. - // If we get here, we have a slice of slice values. - unsupported = true - } - default: - unsupported = true - } - if unsupported { - return nil, "unsupported datastore value type: " + v.Type().String() - } - p = &pb.Property{ - Name: proto.String(name), - Value: &pv, - Multiple: proto.Bool(multiple), - } - if v.IsValid() { - switch v.Interface().(type) { - case []byte: - p.Meaning = pb.Property_BLOB.Enum() - case ByteString: - p.Meaning = pb.Property_BYTESTRING.Enum() - case appengine.BlobKey: - p.Meaning = pb.Property_BLOBKEY.Enum() - case time.Time: - p.Meaning = pb.Property_GD_WHEN.Enum() - case appengine.GeoPoint: - p.Meaning = pb.Property_GEORSS_POINT.Enum() - } - } - return p, "" -} - -// saveEntity saves an EntityProto into a PropertyLoadSaver or struct pointer. -func saveEntity(defaultAppID string, key *Key, src interface{}) (*pb.EntityProto, error) { - var err error - var props []Property - if e, ok := src.(PropertyLoadSaver); ok { - props, err = e.Save() - } else { - props, err = SaveStruct(src) - } - if err != nil { - return nil, err - } - return propertiesToProto(defaultAppID, key, props) -} - -func saveStructProperty(props *[]Property, name string, noIndex, multiple bool, v reflect.Value) error { - p := Property{ - Name: name, - NoIndex: noIndex, - Multiple: multiple, - } - switch x := v.Interface().(type) { - case *Key: - p.Value = x - case time.Time: - p.Value = x - case appengine.BlobKey: - p.Value = x - case appengine.GeoPoint: - p.Value = x - case ByteString: - p.Value = x - default: - switch v.Kind() { - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - p.Value = v.Int() - case reflect.Bool: - p.Value = v.Bool() - case reflect.String: - p.Value = v.String() - case reflect.Float32, reflect.Float64: - p.Value = v.Float() - case reflect.Slice: - if v.Type().Elem().Kind() == reflect.Uint8 { - p.NoIndex = true - p.Value = v.Bytes() - } - case reflect.Struct: - if !v.CanAddr() { - return fmt.Errorf("datastore: unsupported struct field: value is unaddressable") - } - sub, err := newStructPLS(v.Addr().Interface()) - if err != nil { - return fmt.Errorf("datastore: unsupported struct field: %v", err) - } - return sub.(structPLS).save(props, name, noIndex, multiple) - } - } - if p.Value == nil { - return fmt.Errorf("datastore: unsupported struct field type: %v", v.Type()) - } - *props = append(*props, p) - return nil -} - -func (s structPLS) Save() ([]Property, error) { - var props []Property - if err := s.save(&props, "", false, false); err != nil { - return nil, err - } - return props, nil -} - -func (s structPLS) save(props *[]Property, prefix string, noIndex, multiple bool) error { - for i, t := range s.codec.byIndex { - if t.name == "-" { - continue - } - name := t.name - if prefix != "" { - name = prefix + name - } - v := s.v.Field(i) - if !v.IsValid() || !v.CanSet() { - continue - } - noIndex1 := noIndex || t.noIndex - // For slice fields that aren't []byte, save each element. - if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 { - for j := 0; j < v.Len(); j++ { - if err := saveStructProperty(props, name, noIndex1, true, v.Index(j)); err != nil { - return err - } - } - continue - } - // Otherwise, save the field itself. - if err := saveStructProperty(props, name, noIndex1, multiple, v); err != nil { - return err - } - } - return nil -} - -func propertiesToProto(defaultAppID string, key *Key, props []Property) (*pb.EntityProto, error) { - e := &pb.EntityProto{ - Key: keyToProto(defaultAppID, key), - } - if key.parent == nil { - e.EntityGroup = &pb.Path{} - } else { - e.EntityGroup = keyToProto(defaultAppID, key.root()).Path - } - prevMultiple := make(map[string]bool) - - for _, p := range props { - if pm, ok := prevMultiple[p.Name]; ok { - if !pm || !p.Multiple { - return nil, fmt.Errorf("datastore: multiple Properties with Name %q, but Multiple is false", p.Name) - } - } else { - prevMultiple[p.Name] = p.Multiple - } - - x := &pb.Property{ - Name: proto.String(p.Name), - Value: new(pb.PropertyValue), - Multiple: proto.Bool(p.Multiple), - } - switch v := p.Value.(type) { - case int64: - x.Value.Int64Value = proto.Int64(v) - case bool: - x.Value.BooleanValue = proto.Bool(v) - case string: - x.Value.StringValue = proto.String(v) - if p.NoIndex { - x.Meaning = pb.Property_TEXT.Enum() - } - case float64: - x.Value.DoubleValue = proto.Float64(v) - case *Key: - if v != nil { - x.Value.Referencevalue = keyToReferenceValue(defaultAppID, v) - } - case time.Time: - if v.Before(minTime) || v.After(maxTime) { - return nil, fmt.Errorf("datastore: time value out of range") - } - x.Value.Int64Value = proto.Int64(toUnixMicro(v)) - x.Meaning = pb.Property_GD_WHEN.Enum() - case appengine.BlobKey: - x.Value.StringValue = proto.String(string(v)) - x.Meaning = pb.Property_BLOBKEY.Enum() - case appengine.GeoPoint: - if !v.Valid() { - return nil, fmt.Errorf("datastore: invalid GeoPoint value") - } - // NOTE: Strangely, latitude maps to X, longitude to Y. - x.Value.Pointvalue = &pb.PropertyValue_PointValue{X: &v.Lat, Y: &v.Lng} - x.Meaning = pb.Property_GEORSS_POINT.Enum() - case []byte: - x.Value.StringValue = proto.String(string(v)) - x.Meaning = pb.Property_BLOB.Enum() - if !p.NoIndex { - return nil, fmt.Errorf("datastore: cannot index a []byte valued Property with Name %q", p.Name) - } - case ByteString: - x.Value.StringValue = proto.String(string(v)) - x.Meaning = pb.Property_BYTESTRING.Enum() - default: - if p.Value != nil { - return nil, fmt.Errorf("datastore: invalid Value type for a Property with Name %q", p.Name) - } - } - - if p.NoIndex { - e.RawProperty = append(e.RawProperty, x) - } else { - e.Property = append(e.Property, x) - if len(e.Property) > maxIndexedProperties { - return nil, errors.New("datastore: too many indexed properties") - } - } - } - return e, nil -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/time_test.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/time_test.go deleted file mode 100644 index ba74b449eb1..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/time_test.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2012 Google Inc. All Rights Reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "testing" - "time" -) - -func TestUnixMicro(t *testing.T) { - // Test that all these time.Time values survive a round trip to unix micros. - testCases := []time.Time{ - {}, - time.Date(2, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(23, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(234, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(1000, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(1600, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(1700, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(1800, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(1900, 1, 1, 0, 0, 0, 0, time.UTC), - time.Unix(-1e6, -1000), - time.Unix(-1e6, 0), - time.Unix(-1e6, +1000), - time.Unix(-60, -1000), - time.Unix(-60, 0), - time.Unix(-60, +1000), - time.Unix(-1, -1000), - time.Unix(-1, 0), - time.Unix(-1, +1000), - time.Unix(0, -3000), - time.Unix(0, -2000), - time.Unix(0, -1000), - time.Unix(0, 0), - time.Unix(0, +1000), - time.Unix(0, +2000), - time.Unix(+60, -1000), - time.Unix(+60, 0), - time.Unix(+60, +1000), - time.Unix(+1e6, -1000), - time.Unix(+1e6, 0), - time.Unix(+1e6, +1000), - time.Date(1999, 12, 31, 23, 59, 59, 999000, time.UTC), - time.Date(2000, 1, 1, 0, 0, 0, 0, time.UTC), - time.Date(2006, 1, 2, 15, 4, 5, 678000, time.UTC), - time.Date(2009, 11, 10, 23, 0, 0, 0, time.UTC), - time.Date(3456, 1, 1, 0, 0, 0, 0, time.UTC), - } - for _, tc := range testCases { - got := fromUnixMicro(toUnixMicro(tc)) - if !got.Equal(tc) { - t.Errorf("got %q, want %q", got, tc) - } - } - - // Test that a time.Time that isn't an integral number of microseconds - // is not perfectly reconstructed after a round trip. - t0 := time.Unix(0, 123) - t1 := fromUnixMicro(toUnixMicro(t0)) - if t1.Nanosecond()%1000 != 0 || t0.Nanosecond()%1000 == 0 { - t.Errorf("quantization to µs: got %q with %d ns, started with %d ns", t1, t1.Nanosecond(), t0.Nanosecond()) - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/datastore/transaction.go b/Godeps/_workspace/src/google.golang.org/appengine/datastore/transaction.go deleted file mode 100644 index 284037b6435..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/datastore/transaction.go +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package datastore - -import ( - "errors" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - basepb "google.golang.org/appengine/internal/base" - pb "google.golang.org/appengine/internal/datastore" -) - -func init() { - internal.RegisterTransactionSetter(func(x *pb.Query, t *pb.Transaction) { - x.Transaction = t - }) - internal.RegisterTransactionSetter(func(x *pb.GetRequest, t *pb.Transaction) { - x.Transaction = t - }) - internal.RegisterTransactionSetter(func(x *pb.PutRequest, t *pb.Transaction) { - x.Transaction = t - }) - internal.RegisterTransactionSetter(func(x *pb.DeleteRequest, t *pb.Transaction) { - x.Transaction = t - }) -} - -// ErrConcurrentTransaction is returned when a transaction is rolled back due -// to a conflict with a concurrent transaction. -var ErrConcurrentTransaction = errors.New("datastore: concurrent transaction") - -type transaction struct { - appengine.Context - transaction pb.Transaction - finished bool -} - -func (t *transaction) Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error { - if t.finished { - return errors.New("datastore: transaction context has expired") - } - internal.ApplyTransaction(in, &t.transaction) - return t.Context.Call(service, method, in, out, opts) -} - -func runOnce(c appengine.Context, f func(appengine.Context) error, opts *TransactionOptions) error { - // Begin the transaction. - t := &transaction{Context: c} - req := &pb.BeginTransactionRequest{ - App: proto.String(c.FullyQualifiedAppID()), - } - if opts != nil && opts.XG { - req.AllowMultipleEg = proto.Bool(true) - } - if err := t.Context.Call("datastore_v3", "BeginTransaction", req, &t.transaction, nil); err != nil { - return err - } - - // Call f, rolling back the transaction if f returns a non-nil error, or panics. - // The panic is not recovered. - defer func() { - if t.finished { - return - } - t.finished = true - // Ignore the error return value, since we are already returning a non-nil - // error (or we're panicking). - c.Call("datastore_v3", "Rollback", &t.transaction, &basepb.VoidProto{}, nil) - }() - if err := f(t); err != nil { - return err - } - t.finished = true - - // Commit the transaction. - res := &pb.CommitResponse{} - err := c.Call("datastore_v3", "Commit", &t.transaction, res, nil) - if ae, ok := err.(*internal.APIError); ok { - if appengine.IsDevAppServer() { - // The Python Dev AppServer raises an ApplicationError with error code 2 (which is - // Error.CONCURRENT_TRANSACTION) and message "Concurrency exception.". - if ae.Code == int32(pb.Error_BAD_REQUEST) && ae.Detail == "ApplicationError: 2 Concurrency exception." { - return ErrConcurrentTransaction - } - } - if ae.Code == int32(pb.Error_CONCURRENT_TRANSACTION) { - return ErrConcurrentTransaction - } - } - return err -} - -// RunInTransaction runs f in a transaction. It calls f with a transaction -// context tc that f should use for all App Engine operations. -// -// If f returns nil, RunInTransaction attempts to commit the transaction, -// returning nil if it succeeds. If the commit fails due to a conflicting -// transaction, RunInTransaction retries f, each time with a new transaction -// context. It gives up and returns ErrConcurrentTransaction after three -// failed attempts. -// -// If f returns non-nil, then any datastore changes will not be applied and -// RunInTransaction returns that same error. The function f is not retried. -// -// Note that when f returns, the transaction is not yet committed. Calling code -// must be careful not to assume that any of f's changes have been committed -// until RunInTransaction returns nil. -// -// Nested transactions are not supported; c may not be a transaction context. -func RunInTransaction(c appengine.Context, f func(tc appengine.Context) error, opts *TransactionOptions) error { - if _, ok := c.(*transaction); ok { - return errors.New("datastore: nested transactions are not supported") - } - for i := 0; i < 3; i++ { - if err := runOnce(c, f, opts); err != ErrConcurrentTransaction { - return err - } - } - return ErrConcurrentTransaction -} - -// TransactionOptions are the options for running a transaction. -type TransactionOptions struct { - // XG is whether the transaction can cross multiple entity groups. In - // comparison, a single group transaction is one where all datastore keys - // used have the same root key. Note that cross group transactions do not - // have the same behavior as single group transactions. In particular, it - // is much more likely to see partially applied transactions in different - // entity groups, in global queries. - // It is valid to set XG to true even if the transaction is within a - // single entity group. - XG bool -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/delay/delay.go b/Godeps/_workspace/src/google.golang.org/appengine/delay/delay.go deleted file mode 100644 index 2b2e274b55f..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/delay/delay.go +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package delay provides a way to execute code outside the scope of a -user request by using the taskqueue API. - -To declare a function that may be executed later, call Func -in a top-level assignment context, passing it an arbitrary string key -and a function whose first argument is of type appengine.Context. - var laterFunc = delay.Func("key", myFunc) -It is also possible to use a function literal. - var laterFunc = delay.Func("key", func(c appengine.Context, x string) { - // ... - }) - -To call a function, invoke its Call method. - laterFunc.Call(c, "something") -A function may be called any number of times. If the function has any -return arguments, and the last one is of type error, the function may -return a non-nil error to signal that the function should be retried. - -The arguments to functions may be of any type that is encodable by the gob -package. If an argument is of interface type, it is the client's responsibility -to register with the gob package whatever concrete type may be passed for that -argument; see http://golang.org/pkg/gob/#Register for details. - -Any errors during initialization or execution of a function will be -logged to the application logs. Error logs that occur during initialization will -be associated with the request that invoked the Call method. - -The state of a function invocation that has not yet successfully -executed is preserved by combining the file name in which it is declared -with the string key that was passed to the Func function. Updating an app -with pending function invocations is safe as long as the relevant -functions have the (filename, key) combination preserved. - -The delay package uses the Task Queue API to create tasks that call the -reserved application path "/_ah/queue/go/delay". -This path must not be marked as "login: required" in app.yaml; -it must be marked as "login: admin" or have no access restriction. -*/ -package delay - -import ( - "bytes" - "encoding/gob" - "errors" - "fmt" - "net/http" - "reflect" - "runtime" - - "google.golang.org/appengine" - "google.golang.org/appengine/taskqueue" -) - -// Function represents a function that may have a delayed invocation. -type Function struct { - fv reflect.Value // Kind() == reflect.Func - key string - err error // any error during initialization -} - -const ( - // The HTTP path for invocations. - path = "/_ah/queue/go/delay" - // Use the default queue. - queue = "" -) - -var ( - // registry of all delayed functions - funcs = make(map[string]*Function) - - // precomputed types - contextType = reflect.TypeOf((*appengine.Context)(nil)).Elem() - errorType = reflect.TypeOf((*error)(nil)).Elem() - - // errors - errFirstArg = errors.New("first argument must be appengine.Context") -) - -// Func declares a new Function. The second argument must be a function with a -// first argument of type appengine.Context. -// This function must be called at program initialization time. That means it -// must be called in a global variable declaration or from an init function. -// This restriction is necessary because the instance that delays a function -// call may not be the one that executes it. Only the code executed at program -// initialization time is guaranteed to have been run by an instance before it -// receives a request. -func Func(key string, i interface{}) *Function { - f := &Function{fv: reflect.ValueOf(i)} - - // Derive unique, somewhat stable key for this func. - _, file, _, _ := runtime.Caller(1) - f.key = file + ":" + key - - t := f.fv.Type() - if t.Kind() != reflect.Func { - f.err = errors.New("not a function") - return f - } - if t.NumIn() == 0 || t.In(0) != contextType { - f.err = errFirstArg - return f - } - - // Register the function's arguments with the gob package. - // This is required because they are marshaled inside a []interface{}. - // gob.Register only expects to be called during initialization; - // that's fine because this function expects the same. - for i := 0; i < t.NumIn(); i++ { - // Only concrete types may be registered. If the argument has - // interface type, the client is resposible for registering the - // concrete types it will hold. - if t.In(i).Kind() == reflect.Interface { - continue - } - gob.Register(reflect.Zero(t.In(i)).Interface()) - } - - funcs[f.key] = f - return f -} - -type invocation struct { - Key string - Args []interface{} -} - -// Call invokes a delayed function. -// f.Call(c, ...) -// is equivalent to -// t, _ := f.Task(...) -// taskqueue.Add(c, t, "") -func (f *Function) Call(c appengine.Context, args ...interface{}) { - t, err := f.Task(args...) - if err != nil { - c.Errorf("%v", err) - return - } - if _, err := taskqueueAdder(c, t, queue); err != nil { - c.Errorf("delay: taskqueue.Add failed: %v", err) - return - } -} - -// Task creates a Task that will invoke the function. -// Its parameters may be tweaked before adding it to a queue. -// Users should not modify the Path or Payload fields of the returned Task. -func (f *Function) Task(args ...interface{}) (*taskqueue.Task, error) { - if f.err != nil { - return nil, fmt.Errorf("delay: func is invalid: %v", f.err) - } - - nArgs := len(args) + 1 // +1 for the appengine.Context - ft := f.fv.Type() - minArgs := ft.NumIn() - if ft.IsVariadic() { - minArgs-- - } - if nArgs < minArgs { - return nil, fmt.Errorf("delay: too few arguments to func: %d < %d", nArgs, minArgs) - } - if !ft.IsVariadic() && nArgs > minArgs { - return nil, fmt.Errorf("delay: too many arguments to func: %d > %d", nArgs, minArgs) - } - - // Check arg types. - for i := 1; i < nArgs; i++ { - at := reflect.TypeOf(args[i-1]) - var dt reflect.Type - if i < minArgs { - // not a variadic arg - dt = ft.In(i) - } else { - // a variadic arg - dt = ft.In(minArgs).Elem() - } - // nil arguments won't have a type, so they need special handling. - if at == nil { - // nil interface - switch dt.Kind() { - case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: - continue // may be nil - } - return nil, fmt.Errorf("delay: argument %d has wrong type: %v is not nilable", i, dt) - } - switch at.Kind() { - case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice: - av := reflect.ValueOf(args[i-1]) - if av.IsNil() { - // nil value in interface; not supported by gob, so we replace it - // with a nil interface value - args[i-1] = nil - } - } - if !at.AssignableTo(dt) { - return nil, fmt.Errorf("delay: argument %d has wrong type: %v is not assignable to %v", i, at, dt) - } - } - - inv := invocation{ - Key: f.key, - Args: args, - } - - buf := new(bytes.Buffer) - if err := gob.NewEncoder(buf).Encode(inv); err != nil { - return nil, fmt.Errorf("delay: gob encoding failed: %v", err) - } - - return &taskqueue.Task{ - Path: path, - Payload: buf.Bytes(), - }, nil -} - -var taskqueueAdder = taskqueue.Add // for testing - -func init() { - http.HandleFunc(path, func(w http.ResponseWriter, req *http.Request) { - runFunc(appengine.NewContext(req), w, req) - }) -} - -func runFunc(c appengine.Context, w http.ResponseWriter, req *http.Request) { - defer req.Body.Close() - - var inv invocation - if err := gob.NewDecoder(req.Body).Decode(&inv); err != nil { - c.Errorf("delay: failed decoding task payload: %v", err) - c.Warningf("delay: dropping task") - return - } - - f := funcs[inv.Key] - if f == nil { - c.Errorf("delay: no func with key %q found", inv.Key) - c.Warningf("delay: dropping task") - return - } - - ft := f.fv.Type() - in := []reflect.Value{reflect.ValueOf(c)} - for _, arg := range inv.Args { - var v reflect.Value - if arg != nil { - v = reflect.ValueOf(arg) - } else { - // Task was passed a nil argument, so we must construct - // the zero value for the argument here. - n := len(in) // we're constructing the nth argument - var at reflect.Type - if !ft.IsVariadic() || n < ft.NumIn()-1 { - at = ft.In(n) - } else { - at = ft.In(ft.NumIn() - 1).Elem() - } - v = reflect.Zero(at) - } - in = append(in, v) - } - out := f.fv.Call(in) - - if n := ft.NumOut(); n > 0 && ft.Out(n-1) == errorType { - if errv := out[n-1]; !errv.IsNil() { - c.Errorf("delay: func failed (will retry): %v", errv.Interface()) - w.WriteHeader(http.StatusInternalServerError) - return - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/delay/delay_test.go b/Godeps/_workspace/src/google.golang.org/appengine/delay/delay_test.go deleted file mode 100644 index a25479257e6..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/delay/delay_test.go +++ /dev/null @@ -1,307 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package delay - -import ( - "bytes" - "encoding/gob" - "errors" - "fmt" - "net/http" - "net/http/httptest" - "reflect" - "testing" - - "google.golang.org/appengine" - "google.golang.org/appengine/taskqueue" -) - -type CustomType struct { - N int -} - -type CustomInterface interface { - N() int -} - -type CustomImpl int - -func (c CustomImpl) N() int { return int(c) } - -// CustomImpl needs to be registered with gob. -func init() { - gob.Register(CustomImpl(0)) -} - -var ( - invalidFunc = Func("invalid", func() {}) - - regFuncRuns = 0 - regFuncMsg = "" - regFunc = Func("reg", func(c appengine.Context, arg string) { - regFuncRuns++ - regFuncMsg = arg - }) - - custFuncTally = 0 - custFunc = Func("cust", func(c appengine.Context, ct *CustomType, ci CustomInterface) { - a, b := 2, 3 - if ct != nil { - a = ct.N - } - if ci != nil { - b = ci.N() - } - custFuncTally += a + b - }) - - anotherCustFunc = Func("cust2", func(c appengine.Context, n int, ct *CustomType, ci CustomInterface) { - }) - - varFuncMsg = "" - varFunc = Func("variadic", func(c appengine.Context, format string, args ...int) { - // convert []int to []interface{} for fmt.Sprintf. - as := make([]interface{}, len(args)) - for i, a := range args { - as[i] = a - } - varFuncMsg = fmt.Sprintf(format, as...) - }) - - errFuncRuns = 0 - errFuncErr = errors.New("error!") - errFunc = Func("err", func(c appengine.Context) error { - errFuncRuns++ - if errFuncRuns == 1 { - return nil - } - return errFuncErr - }) -) - -type fakeContext struct { - appengine.Context - logging [][]interface{} -} - -func (f *fakeContext) log(level, format string, args ...interface{}) { - f.logging = append(f.logging, append([]interface{}{level, format}, args...)) -} - -func (f *fakeContext) Infof(format string, args ...interface{}) { f.log("INFO", format, args...) } -func (f *fakeContext) Errorf(format string, args ...interface{}) { f.log("ERROR", format, args...) } - -func TestInvalidFunction(t *testing.T) { - c := &fakeContext{} - - invalidFunc.Call(c) - - wantLogging := [][]interface{}{ - {"ERROR", "%v", fmt.Errorf("delay: func is invalid: %s", errFirstArg)}, - } - if !reflect.DeepEqual(c.logging, wantLogging) { - t.Errorf("Incorrect logging: got %+v, want %+v", c.logging, wantLogging) - } -} - -func TestVariadicFunctionArguments(t *testing.T) { - // Check the argument type validation for variadic functions. - - c := &fakeContext{} - - calls := 0 - taskqueueAdder = func(c appengine.Context, t *taskqueue.Task, _ string) (*taskqueue.Task, error) { - calls++ - return t, nil - } - - varFunc.Call(c, "hi") - varFunc.Call(c, "%d", 12) - varFunc.Call(c, "%d %d %d", 3, 1, 4) - if calls != 3 { - t.Errorf("Got %d calls to taskqueueAdder, want 3", calls) - } - - varFunc.Call(c, "%d %s", 12, "a string is bad") - wantLogging := [][]interface{}{ - {"ERROR", "%v", errors.New("delay: argument 3 has wrong type: string is not assignable to int")}, - } - if !reflect.DeepEqual(c.logging, wantLogging) { - t.Errorf("Incorrect logging: got %+v, want %+v", c.logging, wantLogging) - } -} - -func TestBadArguments(t *testing.T) { - // Try running regFunc with different sets of inappropriate arguments. - - c := &fakeContext{} - - regFunc.Call(c) - regFunc.Call(c, "lala", 53) - regFunc.Call(c, 53) - - wantLogging := [][]interface{}{ - {"ERROR", "%v", errors.New("delay: too few arguments to func: 1 < 2")}, - {"ERROR", "%v", errors.New("delay: too many arguments to func: 3 > 2")}, - {"ERROR", "%v", errors.New("delay: argument 1 has wrong type: int is not assignable to string")}, - } - if !reflect.DeepEqual(c.logging, wantLogging) { - t.Errorf("Incorrect logging: got %+v, want %+v", c.logging, wantLogging) - } -} - -func TestRunningFunction(t *testing.T) { - c := &fakeContext{} - - // Fake out the adding of a task. - var task *taskqueue.Task - taskqueueAdder = func(_ appengine.Context, tk *taskqueue.Task, queue string) (*taskqueue.Task, error) { - if queue != "" { - t.Errorf(`Got queue %q, expected ""`, queue) - } - task = tk - return tk, nil - } - - regFuncRuns, regFuncMsg = 0, "" // reset state - const msg = "Why, hello!" - regFunc.Call(c, msg) - - // Simulate the Task Queue service. - req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) - if err != nil { - t.Fatalf("Failed making http.Request: %v", err) - } - rw := httptest.NewRecorder() - runFunc(c, rw, req) - - if regFuncRuns != 1 { - t.Errorf("regFuncRuns: got %d, want 1", regFuncRuns) - } - if regFuncMsg != msg { - t.Errorf("regFuncMsg: got %q, want %q", regFuncMsg, msg) - } -} - -func TestCustomType(t *testing.T) { - c := &fakeContext{} - - // Fake out the adding of a task. - var task *taskqueue.Task - taskqueueAdder = func(_ appengine.Context, tk *taskqueue.Task, queue string) (*taskqueue.Task, error) { - if queue != "" { - t.Errorf(`Got queue %q, expected ""`, queue) - } - task = tk - return tk, nil - } - - custFuncTally = 0 // reset state - custFunc.Call(c, &CustomType{N: 11}, CustomImpl(13)) - - // Simulate the Task Queue service. - req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) - if err != nil { - t.Fatalf("Failed making http.Request: %v", err) - } - rw := httptest.NewRecorder() - runFunc(c, rw, req) - - if custFuncTally != 24 { - t.Errorf("custFuncTally = %d, want 24", custFuncTally) - } - - // Try the same, but with nil values; one is a nil pointer (and thus a non-nil interface value), - // and the other is a nil interface value. - custFuncTally = 0 // reset state - custFunc.Call(c, (*CustomType)(nil), nil) - - // Simulate the Task Queue service. - req, err = http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) - if err != nil { - t.Fatalf("Failed making http.Request: %v", err) - } - rw = httptest.NewRecorder() - runFunc(c, rw, req) - - if custFuncTally != 5 { - t.Errorf("custFuncTally = %d, want 5", custFuncTally) - } -} - -func TestRunningVariadic(t *testing.T) { - c := &fakeContext{} - - // Fake out the adding of a task. - var task *taskqueue.Task - taskqueueAdder = func(_ appengine.Context, tk *taskqueue.Task, queue string) (*taskqueue.Task, error) { - if queue != "" { - t.Errorf(`Got queue %q, expected ""`, queue) - } - task = tk - return tk, nil - } - - varFuncMsg = "" // reset state - varFunc.Call(c, "Amiga %d has %d KB RAM", 500, 512) - - // Simulate the Task Queue service. - req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) - if err != nil { - t.Fatalf("Failed making http.Request: %v", err) - } - rw := httptest.NewRecorder() - runFunc(c, rw, req) - - const expected = "Amiga 500 has 512 KB RAM" - if varFuncMsg != expected { - t.Errorf("varFuncMsg = %q, want %q", varFuncMsg, expected) - } -} - -func TestErrorFunction(t *testing.T) { - c := &fakeContext{} - - // Fake out the adding of a task. - var task *taskqueue.Task - taskqueueAdder = func(_ appengine.Context, tk *taskqueue.Task, queue string) (*taskqueue.Task, error) { - if queue != "" { - t.Errorf(`Got queue %q, expected ""`, queue) - } - task = tk - return tk, nil - } - - errFunc.Call(c) - - // Simulate the Task Queue service. - // The first call should succeed; the second call should fail. - { - req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) - if err != nil { - t.Fatalf("Failed making http.Request: %v", err) - } - rw := httptest.NewRecorder() - runFunc(c, rw, req) - } - { - req, err := http.NewRequest("POST", path, bytes.NewBuffer(task.Payload)) - if err != nil { - t.Fatalf("Failed making http.Request: %v", err) - } - rw := httptest.NewRecorder() - runFunc(c, rw, req) - if rw.Code != http.StatusInternalServerError { - t.Errorf("Got status code %d, want %d", rw.Code, http.StatusInternalServerError) - } - - wantLogging := [][]interface{}{ - {"ERROR", "delay: func failed (will retry): %v", errFuncErr}, - } - if !reflect.DeepEqual(c.logging, wantLogging) { - t.Errorf("Incorrect logging: got %+v, want %+v", c.logging, wantLogging) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/app.yaml b/Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/app.yaml deleted file mode 100644 index 7837139515f..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/app.yaml +++ /dev/null @@ -1,19 +0,0 @@ -# Demo application for Managed VMs. -application: vm-guestbook -version: 1 -runtime: go -vm: true -api_version: go1 - -manual_scaling: - instances: 1 - -handlers: -# Favicon. Without this, the browser hits this once per page view. -- url: /favicon.ico - static_files: favicon.ico - upload: favicon.ico - -# Main app. All the real work is here. -- url: /.* - script: _go_app diff --git a/Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/favicon.ico b/Godeps/_workspace/src/google.golang.org/appengine/demos/guestbook/favicon.ico deleted file mode 100644 index 1a71ea772e972df2e955b36261ae5d7f53b9c9b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmd5)OKVd>6rNI{3l|0|#f50WO+XjL$3`~+!3T;Ix^p413yHRhmS9^&ywzgVMH)<- zCQV34A4!wjylP%GkDGUz=QT;NG>gb*8n4`ye3#{^zkce45EvUvW9N8Y#yV5-i2?n|gRoZc<%s zmh~rn+mM*?Ph4ge?;K&MO=5dH$Y(hhHh2y-K8|XULpI_@BFLhc^dYyZ;RQd6ULnX% zY7XBrdX%kq;dvp(g8Ue4lb2A6TCi0~Be~{)e`OwVpB?PH2D#WOBIv*k9@h8svMjN%LB8=hT3X!a(GF&~^uI=HQRRDv3$W^b7s@-uyV zh0r)6|MU>DZWSsYRM^NkQI4_jJUxMR7lX9x9lUlU?B*HdJ=56ZweCUP$ZoY9rFF+p zujNrIgppL7LdhyaA;coEVs7#ao|(V$&G-5wg`mF4|60vrXX_&(76p9^7qVeblj~)T zDEamE)_Ys!wZ}cExSr6rOJIAGMbZ`| - - - Guestbook Demo - - -

    - {{with .Email}}You are currently logged in as {{.}}.{{end}} - {{with .Login}}Sign in{{end}} - {{with .Logout}}Sign out{{end}} -

    - - {{range .Greetings }} -

    - {{with .Author}}{{.}}{{else}}An anonymous person{{end}} - on {{.Date.Format "3:04pm, Mon 2 Jan"}} - wrote

    {{.Content}}
    -

    - {{end}} - -
    -
    -
    -
    - - diff --git a/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/app.yaml b/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/app.yaml deleted file mode 100644 index bac034b77a3..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/app.yaml +++ /dev/null @@ -1,15 +0,0 @@ -application: helloworld -version: 1 -runtime: go -api_version: go1 -vm: true - -manual_scaling: - instances: 1 - -handlers: -- url: /favicon.ico - static_files: favicon.ico - upload: favicon.ico -- url: /.* - script: _go_app diff --git a/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/favicon.ico b/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/favicon.ico deleted file mode 100644 index f19c04d270a3865384ce3db41412448692b8cba4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmchVT}YE*6vvO#Ozpx+V3I*aL_(n#kx)ooMSh^NcA;pHT?E=LQZz`!FSHCRr@prN zwT3p)%=s-dmt~u}Ev?O|`zZYCq8qyiy0L=y-}5?0YR${e%Q?^Uob&&^@ADoGkso`+ zVq)QuG~pS#!VCV*}8%$~So~Xo7Z}fn#{=kyT1ep!Zb zv1b!}`L%0%gZ-u8{86F};i`UY4wfg*lK=n! diff --git a/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/helloworld.go b/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/helloworld.go deleted file mode 100644 index efd61f8c378..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/demos/helloworld/helloworld.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package helloworld - -import ( - "html/template" - "net/http" - "time" - - "google.golang.org/appengine" -) - -var initTime = time.Now() - -func init() { - http.HandleFunc("/", handle) -} - -func handle(w http.ResponseWriter, r *http.Request) { - if r.URL.Path != "/" { - http.NotFound(w, r) - return - } - - c := appengine.NewContext(r) - c.Infof("Serving the front page.") - - tmpl.Execute(w, time.Since(initTime)) -} - -var tmpl = template.Must(template.New("front").Parse(` - - -

    -Hello, World! 세상아 안녕! -

    - -

    -This instance has been running for {{.}}. -

    - - -`)) diff --git a/Godeps/_workspace/src/google.golang.org/appengine/errors.go b/Godeps/_workspace/src/google.golang.org/appengine/errors.go deleted file mode 100644 index 16d0772e2a4..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/errors.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// This file provides error functions for common API failure modes. - -package appengine - -import ( - "fmt" - - "google.golang.org/appengine/internal" -) - -// IsOverQuota reports whether err represents an API call failure -// due to insufficient available quota. -func IsOverQuota(err error) bool { - callErr, ok := err.(*internal.CallError) - return ok && callErr.Code == 4 -} - -// MultiError is returned by batch operations when there are errors with -// particular elements. Errors will be in a one-to-one correspondence with -// the input elements; successful elements will have a nil entry. -type MultiError []error - -func (m MultiError) Error() string { - s, n := "", 0 - for _, e := range m { - if e != nil { - if n == 0 { - s = e.Error() - } - n++ - } - } - switch n { - case 0: - return "(0 errors)" - case 1: - return s - case 2: - return s + " (and 1 other error)" - } - return fmt.Sprintf("%s (and %d other errors)", s, n-1) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/file/file.go b/Godeps/_workspace/src/google.golang.org/appengine/file/file.go deleted file mode 100644 index 273a1c3f254..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/file/file.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package file provides helper functions for using Google Cloud Storage. -package file - -import ( - "fmt" - - "google.golang.org/appengine" - aipb "google.golang.org/appengine/internal/app_identity" -) - -// DefaultBucketName returns the name of this application's -// default Google Cloud Storage bucket. -func DefaultBucketName(c appengine.Context) (string, error) { - req := &aipb.GetDefaultGcsBucketNameRequest{} - res := &aipb.GetDefaultGcsBucketNameResponse{} - - err := c.Call("app_identity_service", "GetDefaultGcsBucketName", req, res, nil) - if err != nil { - return "", fmt.Errorf("file: no default bucket name returned in RPC response: %v", res) - } - return res.GetDefaultGcsBucketName(), nil -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/identity.go b/Godeps/_workspace/src/google.golang.org/appengine/identity.go deleted file mode 100644 index 3571956d02c..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/identity.go +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package appengine - -import ( - "time" - - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/app_identity" - modpb "google.golang.org/appengine/internal/modules" -) - -// AppID returns the application ID for the current application. -// The string will be a plain application ID (e.g. "appid"), with a -// domain prefix for custom domain deployments (e.g. "example.com:appid"). -func AppID(c Context) string { return internal.AppID(c.FullyQualifiedAppID()) } - -// DefaultVersionHostname returns the standard hostname of the default version -// of the current application (e.g. "my-app.appspot.com"). This is suitable for -// use in constructing URLs. -func DefaultVersionHostname(c Context) string { - return internal.DefaultVersionHostname(c.Request()) -} - -// ModuleName returns the module name of the current instance. -func ModuleName(c Context) string { - return internal.ModuleName() -} - -// ModuleHostname returns a hostname of a module instance. -// If module is the empty string, it refers to the module of the current instance. -// If version is empty, it refers to the version of the current instance if valid, -// or the default version of the module of the current instance. -// If instance is empty, ModuleHostname returns the load-balancing hostname. -func ModuleHostname(c Context, module, version, instance string) (string, error) { - req := &modpb.GetHostnameRequest{} - if module != "" { - req.Module = &module - } - if version != "" { - req.Version = &version - } - if instance != "" { - req.Instance = &instance - } - res := &modpb.GetHostnameResponse{} - if err := c.Call("modules", "GetHostname", req, res, nil); err != nil { - return "", err - } - return *res.Hostname, nil -} - -// VersionID returns the version ID for the current application. -// It will be of the form "X.Y", where X is specified in app.yaml, -// and Y is a number generated when each version of the app is uploaded. -// It does not include a module name. -func VersionID(c Context) string { return internal.VersionID() } - -// InstanceID returns a mostly-unique identifier for this instance. -func InstanceID() string { return internal.InstanceID() } - -// Datacenter returns an identifier for the datacenter that the instance is running in. -func Datacenter(c Context) string { return internal.Datacenter(c.Request()) } - -// ServerSoftware returns the App Engine release version. -// In production, it looks like "Google App Engine/X.Y.Z". -// In the development appserver, it looks like "Development/X.Y". -func ServerSoftware() string { return internal.ServerSoftware() } - -// RequestID returns a string that uniquely identifies the request. -func RequestID(c Context) string { return internal.RequestID(c.Request()) } - -// AccessToken generates an OAuth2 access token for the specified scopes on -// behalf of service account of this application. This token will expire after -// the returned time. -func AccessToken(c Context, scopes ...string) (token string, expiry time.Time, err error) { - req := &pb.GetAccessTokenRequest{Scope: scopes} - res := &pb.GetAccessTokenResponse{} - - err = c.Call("app_identity_service", "GetAccessToken", req, res, nil) - if err != nil { - return "", time.Time{}, err - } - return res.GetAccessToken(), time.Unix(res.GetExpirationTime(), 0), nil -} - -// Certificate represents a public certificate for the app. -type Certificate struct { - KeyName string - Data []byte // PEM-encoded X.509 certificate -} - -// PublicCertificates retrieves the public certificates for the app. -// They can be used to verify a signature returned by SignBytes. -func PublicCertificates(c Context) ([]Certificate, error) { - req := &pb.GetPublicCertificateForAppRequest{} - res := &pb.GetPublicCertificateForAppResponse{} - if err := c.Call("app_identity_service", "GetPublicCertificatesForApp", req, res, nil); err != nil { - return nil, err - } - var cs []Certificate - for _, pc := range res.PublicCertificateList { - cs = append(cs, Certificate{ - KeyName: pc.GetKeyName(), - Data: []byte(pc.GetX509CertificatePem()), - }) - } - return cs, nil -} - -// ServiceAccount returns a string representing the service account name, in -// the form of an email address (typically app_id@appspot.gserviceaccount.com). -func ServiceAccount(c Context) (string, error) { - req := &pb.GetServiceAccountNameRequest{} - res := &pb.GetServiceAccountNameResponse{} - - err := c.Call("app_identity_service", "GetServiceAccountName", req, res, nil) - if err != nil { - return "", err - } - return res.GetServiceAccountName(), err -} - -// SignBytes signs bytes using a private key unique to your application. -func SignBytes(c Context, bytes []byte) (string, []byte, error) { - req := &pb.SignForAppRequest{BytesToSign: bytes} - res := &pb.SignForAppResponse{} - - err := c.Call("app_identity_service", "SignForApp", req, res, nil) - if err != nil { - return "", nil, err - } - return res.GetKeyName(), res.GetSignatureBytes(), err -} - -func init() { - internal.RegisterErrorCodeMap("app_identity_service", pb.AppIdentityServiceError_ErrorCode_name) - internal.RegisterErrorCodeMap("modules", modpb.ModulesServiceError_ErrorCode_name) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/image/image.go b/Godeps/_workspace/src/google.golang.org/appengine/image/image.go deleted file mode 100644 index 358fb044740..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/image/image.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package image provides image services. -package image - -import ( - "fmt" - "net/url" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/image" -) - -type ServingURLOptions struct { - Secure bool // whether the URL should use HTTPS - - // Size must be between zero and 1600. - // If Size is non-zero, a resized version of the image is served, - // and Size is the served image's longest dimension. The aspect ratio is preserved. - // If Crop is true the image is cropped from the center instead of being resized. - Size int - Crop bool -} - -// ServingURL returns a URL that will serve an image from Blobstore. -func ServingURL(c appengine.Context, key appengine.BlobKey, opts *ServingURLOptions) (*url.URL, error) { - req := &pb.ImagesGetUrlBaseRequest{ - BlobKey: (*string)(&key), - } - if opts != nil && opts.Secure { - req.CreateSecureUrl = &opts.Secure - } - res := &pb.ImagesGetUrlBaseResponse{} - if err := c.Call("images", "GetUrlBase", req, res, nil); err != nil { - return nil, err - } - - // The URL may have suffixes added to dynamically resize or crop: - // - adding "=s32" will serve the image resized to 32 pixels, preserving the aspect ratio. - // - adding "=s32-c" is the same as "=s32" except it will be cropped. - u := *res.Url - if opts != nil && opts.Size > 0 { - u += fmt.Sprintf("=s%d", opts.Size) - if opts.Crop { - u += "-c" - } - } - return url.Parse(u) -} - -// DeleteServingURL deletes the serving URL for an image. -func DeleteServingURL(c appengine.Context, key appengine.BlobKey) error { - req := &pb.ImagesDeleteUrlBaseRequest{ - BlobKey: (*string)(&key), - } - res := &pb.ImagesDeleteUrlBaseResponse{} - return c.Call("images", "DeleteUrlBase", req, res, nil) -} - -func init() { - internal.RegisterErrorCodeMap("images", pb.ImagesServiceError_ErrorCode_name) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/aetesting/fake.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/aetesting/fake.go deleted file mode 100644 index 68925f29754..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/aetesting/fake.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package aetesting provides utilities for testing App Engine packages. -// This is not for testing user applications. -package aetesting - -import ( - "fmt" - "reflect" - "testing" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" -) - -// FakeSingleContext returns a context whose Call invocations will be serviced -// by f, which should be a function that has two arguments of the input and output -// protocol buffer type, and one error return. -func FakeSingleContext(t *testing.T, service, method string, f interface{}) appengine.Context { - fv := reflect.ValueOf(f) - if fv.Kind() != reflect.Func { - t.Fatal("not a function") - } - ft := fv.Type() - if ft.NumIn() != 2 || ft.NumOut() != 1 { - t.Fatalf("f has %d in and %d out, want 2 in and 1 out", ft.NumIn(), ft.NumOut()) - } - for i := 0; i < 2; i++ { - at := ft.In(i) - if !at.Implements(protoMessageType) { - t.Fatalf("arg %d does not implement proto.Message", i) - } - } - if ft.Out(0) != errorType { - t.Fatalf("f's return is %v, want error", ft.Out(0)) - } - return &single{ - t: t, - service: service, - method: method, - f: fv, - } -} - -var ( - protoMessageType = reflect.TypeOf((*proto.Message)(nil)).Elem() - errorType = reflect.TypeOf((*error)(nil)).Elem() -) - -type single struct { - t *testing.T - service, method string - f reflect.Value -} - -func (s *single) logf(level, format string, args ...interface{}) { - s.t.Logf(level+": "+format, args...) -} - -func (s *single) Debugf(format string, args ...interface{}) { s.logf("DEBUG", format, args...) } -func (s *single) Infof(format string, args ...interface{}) { s.logf("INFO", format, args...) } -func (s *single) Warningf(format string, args ...interface{}) { s.logf("WARNING", format, args...) } -func (s *single) Errorf(format string, args ...interface{}) { s.logf("ERROR", format, args...) } -func (s *single) Criticalf(format string, args ...interface{}) { s.logf("CRITICAL", format, args...) } -func (*single) FullyQualifiedAppID() string { return "dev~fake-app" } -func (*single) Request() interface{} { return nil } - -func (s *single) Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error { - if service == "__go__" { - return fmt.Errorf("Unknown API call /%s.%s", service, method) - } - if service != s.service || method != s.method { - s.t.Fatalf("Unexpected call to /%s.%s", service, method) - } - ins := []reflect.Value{ - reflect.ValueOf(in), - reflect.ValueOf(out), - } - outs := s.f.Call(ins) - if outs[0].IsNil() { - return nil - } - return outs[0].Interface().(error) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/api.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/api.go deleted file mode 100644 index 7c7b851c7e8..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/api.go +++ /dev/null @@ -1,589 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -import ( - "bytes" - "fmt" - "io/ioutil" - "log" - "net" - "net/http" - "net/url" - "os" - "runtime" - "strconv" - "strings" - "sync" - "sync/atomic" - "time" - - "github.com/golang/protobuf/proto" - - basepb "google.golang.org/appengine/internal/base" - logpb "google.golang.org/appengine/internal/log" - remotepb "google.golang.org/appengine/internal/remote_api" -) - -const ( - apiPath = "/rpc_http" -) - -var ( - // Incoming headers. - ticketHeader = http.CanonicalHeaderKey("X-AppEngine-API-Ticket") - dapperHeader = http.CanonicalHeaderKey("X-Google-DapperTraceInfo") - defNamespaceHeader = http.CanonicalHeaderKey("X-AppEngine-Default-Namespace") - curNamespaceHeader = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace") - userIPHeader = http.CanonicalHeaderKey("X-AppEngine-User-IP") - remoteAddrHeader = http.CanonicalHeaderKey("X-AppEngine-Remote-Addr") - - // Outgoing headers. - apiEndpointHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Endpoint") - apiEndpointHeaderValue = []string{"app-engine-apis"} - apiMethodHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Method") - apiMethodHeaderValue = []string{"/VMRemoteAPI.CallRemoteAPI"} - apiDeadlineHeader = http.CanonicalHeaderKey("X-Google-RPC-Service-Deadline") - apiContentType = http.CanonicalHeaderKey("Content-Type") - apiContentTypeValue = []string{"application/octet-stream"} - logFlushHeader = http.CanonicalHeaderKey("X-AppEngine-Log-Flush-Count") - - apiHTTPClient = &http.Client{ - Transport: &http.Transport{ - Proxy: http.ProxyFromEnvironment, - Dial: limitDial, - }, - } -) - -func apiHost() string { - host, port := "appengine.googleapis.com", "10001" - if h := os.Getenv("API_HOST"); h != "" { - host = h - } - if p := os.Getenv("API_PORT"); p != "" { - port = p - } - return host + ":" + port -} - -func handleHTTP(w http.ResponseWriter, r *http.Request) { - c := &context{ - req: r, - outHeader: w.Header(), - } - stopFlushing := make(chan int) - - ctxs.Lock() - ctxs.m[r] = c - ctxs.Unlock() - defer func() { - ctxs.Lock() - delete(ctxs.m, r) - ctxs.Unlock() - }() - - // Patch up RemoteAddr so it looks reasonable. - if addr := r.Header.Get(userIPHeader); addr != "" { - r.RemoteAddr = addr - } else if addr = r.Header.Get(remoteAddrHeader); addr != "" { - r.RemoteAddr = addr - } else { - // Should not normally reach here, but pick a sensible default anyway. - r.RemoteAddr = "127.0.0.1" - } - // The address in the headers will most likely be of these forms: - // 123.123.123.123 - // 2001:db8::1 - // net/http.Request.RemoteAddr is specified to be in "IP:port" form. - if _, _, err := net.SplitHostPort(r.RemoteAddr); err != nil { - // Assume the remote address is only a host; add a default port. - r.RemoteAddr = net.JoinHostPort(r.RemoteAddr, "80") - } - - // Start goroutine responsible for flushing app logs. - // This is done after adding c to ctx.m (and stopped before removing it) - // because flushing logs requires making an API call. - go c.logFlusher(stopFlushing) - - executeRequestSafely(c, r) - c.outHeader = nil // make sure header changes aren't respected any more - - stopFlushing <- 1 // any logging beyond this point will be dropped - - // Flush any pending logs asynchronously. - c.pendingLogs.Lock() - flushes := c.pendingLogs.flushes - if len(c.pendingLogs.lines) > 0 { - flushes++ - } - c.pendingLogs.Unlock() - go c.flushLog(false) - w.Header().Set(logFlushHeader, strconv.Itoa(flushes)) - - // Avoid nil Write call if c.Write is never called. - if c.outCode != 0 { - w.WriteHeader(c.outCode) - } - if c.outBody != nil { - w.Write(c.outBody) - } -} - -func executeRequestSafely(c *context, r *http.Request) { - defer func() { - if x := recover(); x != nil { - c.logf(4, "%s", renderPanic(x)) // 4 == critical - } - }() - - http.DefaultServeMux.ServeHTTP(c, r) -} - -func renderPanic(x interface{}) string { - buf := make([]byte, 16<<10) // 16 KB should be plenty - buf = buf[:runtime.Stack(buf, false)] - - // Remove the first few stack frames: - // this func - // the recover closure in the caller - // That will root the stack trace at the site of the panic. - const ( - skipStart = "internal.renderPanic" - skipFrames = 2 - ) - start := bytes.Index(buf, []byte(skipStart)) - p := start - for i := 0; i < skipFrames*2 && p+1 < len(buf); i++ { - p = bytes.IndexByte(buf[p+1:], '\n') + p + 1 - if p < 0 { - break - } - } - if p >= 0 { - // buf[start:p+1] is the block to remove. - // Copy buf[p+1:] over buf[start:] and shrink buf. - copy(buf[start:], buf[p+1:]) - buf = buf[:len(buf)-(p+1-start)] - } - - // Add panic heading. - head := fmt.Sprintf("panic: %v\n\n", x) - if len(head) > len(buf) { - // Extremely unlikely to happen. - return head - } - copy(buf[len(head):], buf) - copy(buf, head) - - return string(buf) -} - -var ctxs = struct { - sync.Mutex - m map[*http.Request]*context - bg *context // background context, lazily initialized -}{ - m: make(map[*http.Request]*context), -} - -// context represents the context of an in-flight HTTP request. -// It implements the appengine.Context and http.ResponseWriter interfaces. -type context struct { - req *http.Request - - outCode int - outHeader http.Header - outBody []byte - - pendingLogs struct { - sync.Mutex - lines []*logpb.UserAppLogLine - flushes int - } -} - -func NewContext(req *http.Request) *context { - ctxs.Lock() - c := ctxs.m[req] - ctxs.Unlock() - - if c == nil { - // Someone passed in an http.Request that is not in-flight. - // We panic here rather than panicking at a later point - // so that stack traces will be more sensible. - log.Panic("appengine: NewContext passed an unknown http.Request") - } - return c -} - -func BackgroundContext() *context { - ctxs.Lock() - defer ctxs.Unlock() - - if ctxs.bg != nil { - return ctxs.bg - } - - // Compute background security ticket. - appID := partitionlessAppID() - escAppID := strings.Replace(strings.Replace(appID, ":", "_", -1), ".", "_", -1) - majVersion := VersionID() - if i := strings.Index(majVersion, "_"); i >= 0 { - majVersion = majVersion[:i] - } - ticket := fmt.Sprintf("%s/%s.%s.%s", escAppID, ModuleName(), majVersion, InstanceID()) - - ctxs.bg = &context{ - req: &http.Request{ - Header: http.Header{ - ticketHeader: []string{ticket}, - }, - }, - } - - // TODO(dsymonds): Wire up the shutdown handler to do a final flush. - go ctxs.bg.logFlusher(make(chan int)) - - return ctxs.bg -} - -var errTimeout = &CallError{ - Detail: "Deadline exceeded", - Code: int32(remotepb.RpcError_CANCELLED), - Timeout: true, -} - -func (c *context) Header() http.Header { return c.outHeader } - -// Copied from $GOROOT/src/pkg/net/http/transfer.go. Some response status -// codes do not permit a response body (nor response entity headers such as -// Content-Length, Content-Type, etc). -func bodyAllowedForStatus(status int) bool { - switch { - case status >= 100 && status <= 199: - return false - case status == 204: - return false - case status == 304: - return false - } - return true -} - -func (c *context) Write(b []byte) (int, error) { - if c.outCode == 0 { - c.WriteHeader(http.StatusOK) - } - if len(b) > 0 && !bodyAllowedForStatus(c.outCode) { - return 0, http.ErrBodyNotAllowed - } - c.outBody = append(c.outBody, b...) - return len(b), nil -} - -func (c *context) WriteHeader(code int) { - if c.outCode != 0 { - c.Errorf("WriteHeader called multiple times on request.") - return - } - c.outCode = code -} - -func (c *context) post(body []byte, timeout time.Duration) (b []byte, err error) { - dst := apiHost() - hreq := &http.Request{ - Method: "POST", - URL: &url.URL{ - Scheme: "http", - Host: dst, - Path: apiPath, - }, - Header: http.Header{ - apiEndpointHeader: apiEndpointHeaderValue, - apiMethodHeader: apiMethodHeaderValue, - apiContentType: apiContentTypeValue, - apiDeadlineHeader: []string{strconv.FormatFloat(timeout.Seconds(), 'f', -1, 64)}, - }, - Body: ioutil.NopCloser(bytes.NewReader(body)), - ContentLength: int64(len(body)), - Host: dst, - } - if info := c.req.Header.Get(dapperHeader); info != "" { - hreq.Header.Set(dapperHeader, info) - } - - tr := apiHTTPClient.Transport.(*http.Transport) - - var timedOut int32 // atomic; set to 1 if timed out - t := time.AfterFunc(timeout, func() { - atomic.StoreInt32(&timedOut, 1) - tr.CancelRequest(hreq) - }) - defer t.Stop() - defer func() { - // Check if timeout was exceeded. - if atomic.LoadInt32(&timedOut) != 0 { - err = errTimeout - } - }() - - hresp, err := apiHTTPClient.Do(hreq) - if err != nil { - return nil, &CallError{ - Detail: fmt.Sprintf("service bridge HTTP failed: %v", err), - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - defer hresp.Body.Close() - hrespBody, err := ioutil.ReadAll(hresp.Body) - if hresp.StatusCode != 200 { - return nil, &CallError{ - Detail: fmt.Sprintf("service bridge returned HTTP %d (%q)", hresp.StatusCode, hrespBody), - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - if err != nil { - return nil, &CallError{ - Detail: fmt.Sprintf("service bridge response bad: %v", err), - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - return hrespBody, nil -} - -var virtualMethodHeaders = map[string]string{ - "GetNamespace": curNamespaceHeader, - "GetDefaultNamespace": defNamespaceHeader, - - "user:Email": http.CanonicalHeaderKey("X-AppEngine-User-Email"), - "user:AuthDomain": http.CanonicalHeaderKey("X-AppEngine-Auth-Domain"), - "user:ID": http.CanonicalHeaderKey("X-AppEngine-User-Id"), - "user:IsAdmin": http.CanonicalHeaderKey("X-AppEngine-User-Is-Admin"), - "user:FederatedIdentity": http.CanonicalHeaderKey("X-AppEngine-Federated-Identity"), - "user:FederatedProvider": http.CanonicalHeaderKey("X-AppEngine-Federated-Provider"), -} - -func (c *context) Call(service, method string, in, out proto.Message, opts *CallOptions) error { - if service == "__go__" { - if hdr, ok := virtualMethodHeaders[method]; ok { - out.(*basepb.StringProto).Value = proto.String(c.req.Header.Get(hdr)) - return nil - } - } - - // Default RPC timeout is 5s. - timeout := 5 * time.Second - if opts != nil && opts.Timeout > 0 { - timeout = opts.Timeout - } - - data, err := proto.Marshal(in) - if err != nil { - return err - } - - ticket := c.req.Header.Get(ticketHeader) - req := &remotepb.Request{ - ServiceName: &service, - Method: &method, - Request: data, - RequestId: &ticket, - } - hreqBody, err := proto.Marshal(req) - if err != nil { - return err - } - - hrespBody, err := c.post(hreqBody, timeout) - if err != nil { - return err - } - - res := &remotepb.Response{} - if err := proto.Unmarshal(hrespBody, res); err != nil { - return err - } - if res.RpcError != nil { - ce := &CallError{ - Detail: res.RpcError.GetDetail(), - Code: *res.RpcError.Code, - } - switch remotepb.RpcError_ErrorCode(ce.Code) { - case remotepb.RpcError_CANCELLED, remotepb.RpcError_DEADLINE_EXCEEDED: - ce.Timeout = true - } - return ce - } - if res.ApplicationError != nil { - return &APIError{ - Service: *req.ServiceName, - Detail: res.ApplicationError.GetDetail(), - Code: *res.ApplicationError.Code, - } - } - if res.Exception != nil || res.JavaException != nil { - // This shouldn't happen, but let's be defensive. - return &CallError{ - Detail: "service bridge returned exception", - Code: int32(remotepb.RpcError_UNKNOWN), - } - } - return proto.Unmarshal(res.Response, out) -} - -func (c *context) Request() interface{} { - return c.req -} - -func (c *context) addLogLine(ll *logpb.UserAppLogLine) { - // Truncate long log lines. - // TODO(dsymonds): Check if this is still necessary. - const lim = 8 << 10 - if len(*ll.Message) > lim { - suffix := fmt.Sprintf("...(length %d)", len(*ll.Message)) - ll.Message = proto.String((*ll.Message)[:lim-len(suffix)] + suffix) - } - - c.pendingLogs.Lock() - c.pendingLogs.lines = append(c.pendingLogs.lines, ll) - c.pendingLogs.Unlock() -} - -var logLevelName = map[int64]string{ - 0: "DEBUG", - 1: "INFO", - 2: "WARNING", - 3: "ERROR", - 4: "CRITICAL", -} - -func (c *context) logf(level int64, format string, args ...interface{}) { - s := fmt.Sprintf(format, args...) - s = strings.TrimRight(s, "\n") // Remove any trailing newline characters. - c.addLogLine(&logpb.UserAppLogLine{ - TimestampUsec: proto.Int64(time.Now().UnixNano() / 1e3), - Level: &level, - Message: &s, - }) - log.Print(logLevelName[level] + ": " + s) -} - -func (c *context) Debugf(format string, args ...interface{}) { c.logf(0, format, args...) } -func (c *context) Infof(format string, args ...interface{}) { c.logf(1, format, args...) } -func (c *context) Warningf(format string, args ...interface{}) { c.logf(2, format, args...) } -func (c *context) Errorf(format string, args ...interface{}) { c.logf(3, format, args...) } -func (c *context) Criticalf(format string, args ...interface{}) { c.logf(4, format, args...) } - -// FullyQualifiedAppID returns the fully-qualified application ID. -// This may contain a partition prefix (e.g. "s~" for High Replication apps), -// or a domain prefix (e.g. "example.com:"). -func (c *context) FullyQualifiedAppID() string { return fullyQualifiedAppID() } - -// flushLog attempts to flush any pending logs to the appserver. -// It should not be called concurrently. -func (c *context) flushLog(force bool) (flushed bool) { - c.pendingLogs.Lock() - // Grab up to 30 MB. We can get away with up to 32 MB, but let's be cautious. - n, rem := 0, 30<<20 - for ; n < len(c.pendingLogs.lines); n++ { - ll := c.pendingLogs.lines[n] - // Each log line will require about 3 bytes of overhead. - nb := proto.Size(ll) + 3 - if nb > rem { - break - } - rem -= nb - } - lines := c.pendingLogs.lines[:n] - c.pendingLogs.lines = c.pendingLogs.lines[n:] - c.pendingLogs.Unlock() - - if len(lines) == 0 && !force { - // Nothing to flush. - return false - } - - rescueLogs := false - defer func() { - if rescueLogs { - c.pendingLogs.Lock() - c.pendingLogs.lines = append(lines, c.pendingLogs.lines...) - c.pendingLogs.Unlock() - } - }() - - buf, err := proto.Marshal(&logpb.UserAppLogGroup{ - LogLine: lines, - }) - if err != nil { - log.Printf("internal.flushLog: marshaling UserAppLogGroup: %v", err) - rescueLogs = true - return false - } - - req := &logpb.FlushRequest{ - Logs: buf, - } - res := &basepb.VoidProto{} - c.pendingLogs.Lock() - c.pendingLogs.flushes++ - c.pendingLogs.Unlock() - if err := c.Call("logservice", "Flush", req, res, nil); err != nil { - log.Printf("internal.flushLog: Flush RPC: %v", err) - rescueLogs = true - return false - } - return true -} - -const ( - // Log flushing parameters. - flushInterval = 1 * time.Second - forceFlushInterval = 60 * time.Second -) - -func (c *context) logFlusher(stop <-chan int) { - lastFlush := time.Now() - tick := time.NewTicker(flushInterval) - for { - select { - case <-stop: - // Request finished. - tick.Stop() - return - case <-tick.C: - force := time.Now().Sub(lastFlush) > forceFlushInterval - if c.flushLog(force) { - lastFlush = time.Now() - } - } - } -} - -func ContextForTesting(req *http.Request) *context { - return &context{req: req} -} - -// caller is a subset of appengine.Context. -type caller interface { - Call(service, method string, in, out proto.Message, opts *CallOptions) error -} - -var virtualOpts = &CallOptions{ - // Virtual API calls should happen nearly instantaneously. - Timeout: 1 * time.Millisecond, -} - -// VirtAPI invokes a virtual API call for the __go__ service. -// It is for methods that accept a VoidProto and return a StringProto. -// It returns an empty string if the call fails. -func VirtAPI(c caller, method string) string { - s := &basepb.StringProto{} - if err := c.Call("__go__", method, &basepb.VoidProto{}, s, virtualOpts); err != nil { - log.Printf("/__go__.%s failed: %v", method, err) - } - return s.GetValue() -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/api_race_test.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/api_race_test.go deleted file mode 100644 index d6977f192d2..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/api_race_test.go +++ /dev/null @@ -1,5 +0,0 @@ -// +build race - -package internal - -func init() { raceDetector = true } diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/api_test.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/api_test.go deleted file mode 100644 index 1339c019132..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/api_test.go +++ /dev/null @@ -1,412 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -import ( - "bufio" - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/http/httptest" - "net/url" - "os" - "os/exec" - "strings" - "sync/atomic" - "testing" - "time" - - "github.com/golang/protobuf/proto" - - basepb "google.golang.org/appengine/internal/base" - remotepb "google.golang.org/appengine/internal/remote_api" -) - -const testTicketHeader = "X-Magic-Ticket-Header" - -func init() { - ticketHeader = testTicketHeader -} - -type fakeAPIHandler struct { - hang chan int // used for RunSlowly RPC - - LogFlushes int32 // atomic -} - -func (f *fakeAPIHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { - writeResponse := func(res *remotepb.Response) { - hresBody, err := proto.Marshal(res) - if err != nil { - http.Error(w, fmt.Sprintf("Failed encoding API response: %v", err), 500) - return - } - w.Write(hresBody) - } - - if r.URL.Path != "/rpc_http" { - http.NotFound(w, r) - return - } - hreqBody, err := ioutil.ReadAll(r.Body) - if err != nil { - http.Error(w, fmt.Sprintf("Bad body: %v", err), 500) - return - } - apiReq := &remotepb.Request{} - if err := proto.Unmarshal(hreqBody, apiReq); err != nil { - http.Error(w, fmt.Sprintf("Bad encoded API request: %v", err), 500) - return - } - if *apiReq.RequestId != "s3cr3t" { - writeResponse(&remotepb.Response{ - RpcError: &remotepb.RpcError{ - Code: proto.Int32(int32(remotepb.RpcError_SECURITY_VIOLATION)), - Detail: proto.String("bad security ticket"), - }, - }) - return - } - if got, want := r.Header.Get(dapperHeader), "trace-001"; got != want { - writeResponse(&remotepb.Response{ - RpcError: &remotepb.RpcError{ - Code: proto.Int32(int32(remotepb.RpcError_BAD_REQUEST)), - Detail: proto.String(fmt.Sprintf("trace info = %q, want %q", got, want)), - }, - }) - return - } - - service, method := *apiReq.ServiceName, *apiReq.Method - var resOut proto.Message - if service == "actordb" && method == "LookupActor" { - req := &basepb.StringProto{} - res := &basepb.StringProto{} - if err := proto.Unmarshal(apiReq.Request, req); err != nil { - http.Error(w, fmt.Sprintf("Bad encoded request: %v", err), 500) - return - } - if *req.Value == "Doctor Who" { - res.Value = proto.String("David Tennant") - } - resOut = res - } - if service == "errors" { - switch method { - case "Non200": - http.Error(w, "I'm a little teapot.", 418) - return - case "ShortResponse": - w.Header().Set("Content-Length", "100") - w.Write([]byte("way too short")) - return - case "OverQuota": - writeResponse(&remotepb.Response{ - RpcError: &remotepb.RpcError{ - Code: proto.Int32(int32(remotepb.RpcError_OVER_QUOTA)), - Detail: proto.String("you are hogging the resources!"), - }, - }) - return - case "RunSlowly": - // TestAPICallRPCFailure creates f.hang, but does not strobe it - // until c.Call returns with remotepb.RpcError_CANCELLED. - // This is here to force a happens-before relationship between - // the httptest server handler and shutdown. - <-f.hang - resOut = &basepb.VoidProto{} - } - } - if service == "logservice" && method == "Flush" { - // Pretend log flushing is slow. - time.Sleep(50 * time.Millisecond) - atomic.AddInt32(&f.LogFlushes, 1) - resOut = &basepb.VoidProto{} - } - - encOut, err := proto.Marshal(resOut) - if err != nil { - http.Error(w, fmt.Sprintf("Failed encoding response: %v", err), 500) - return - } - writeResponse(&remotepb.Response{ - Response: encOut, - }) -} - -func setup() (f *fakeAPIHandler, c *context, cleanup func()) { - f = &fakeAPIHandler{} - srv := httptest.NewServer(f) - parts := strings.SplitN(strings.TrimPrefix(srv.URL, "http://"), ":", 2) - os.Setenv("API_HOST", parts[0]) - os.Setenv("API_PORT", parts[1]) - return f, &context{ - req: &http.Request{ - Header: http.Header{ - ticketHeader: []string{"s3cr3t"}, - dapperHeader: []string{"trace-001"}, - }, - }, - }, func() { - srv.Close() - os.Setenv("API_HOST", "") - os.Setenv("API_PORT", "") - } -} - -func TestAPICall(t *testing.T) { - _, c, cleanup := setup() - defer cleanup() - - req := &basepb.StringProto{ - Value: proto.String("Doctor Who"), - } - res := &basepb.StringProto{} - err := c.Call("actordb", "LookupActor", req, res, nil) - if err != nil { - t.Fatalf("API call failed: %v", err) - } - if got, want := *res.Value, "David Tennant"; got != want { - t.Errorf("Response is %q, want %q", got, want) - } -} - -func TestAPICallRPCFailure(t *testing.T) { - f, c, cleanup := setup() - defer cleanup() - - testCases := []struct { - method string - code remotepb.RpcError_ErrorCode - }{ - {"Non200", remotepb.RpcError_UNKNOWN}, - {"ShortResponse", remotepb.RpcError_UNKNOWN}, - {"OverQuota", remotepb.RpcError_OVER_QUOTA}, - {"RunSlowly", remotepb.RpcError_CANCELLED}, - } - f.hang = make(chan int) // only for RunSlowly - for _, tc := range testCases { - opts := &CallOptions{ - Timeout: 100 * time.Millisecond, - } - err := c.Call("errors", tc.method, &basepb.VoidProto{}, &basepb.VoidProto{}, opts) - ce, ok := err.(*CallError) - if !ok { - t.Errorf("%s: API call error is %T (%v), want *CallError", tc.method, err, err) - continue - } - if ce.Code != int32(tc.code) { - t.Errorf("%s: ce.Code = %d, want %d", tc.method, ce.Code, tc.code) - } - if tc.method == "RunSlowly" { - f.hang <- 1 // release the HTTP handler - } - } -} - -func TestAPICallDialFailure(t *testing.T) { - // See what happens if the API host is unresponsive. - // This should time out quickly, not hang forever. - _, c, cleanup := setup() - defer cleanup() - os.Setenv("API_HOST", "") - os.Setenv("API_PORT", "") - - start := time.Now() - err := c.Call("foo", "bar", &basepb.VoidProto{}, &basepb.VoidProto{}, nil) - const max = 1 * time.Second - if taken := time.Since(start); taken > max { - t.Errorf("Dial hang took too long: %v > %v", taken, max) - } - if err == nil { - t.Error("Call did not fail") - } -} - -func TestDelayedLogFlushing(t *testing.T) { - f, c, cleanup := setup() - defer cleanup() - - http.HandleFunc("/quick_log", func(w http.ResponseWriter, r *http.Request) { - c := NewContext(r) - c.Infof("It's a lovely day.") - w.WriteHeader(200) - w.Write(make([]byte, 100<<10)) // write 100 KB to force HTTP flush - }) - - r := &http.Request{ - Method: "GET", - URL: &url.URL{ - Scheme: "http", - Path: "/quick_log", - }, - Header: c.req.Header, - Body: ioutil.NopCloser(bytes.NewReader(nil)), - } - w := httptest.NewRecorder() - - // Check that log flushing does not hold up the HTTP response. - start := time.Now() - handleHTTP(w, r) - if d := time.Since(start); d > 10*time.Millisecond { - t.Errorf("handleHTTP took %v, want under 10ms", d) - } - const hdr = "X-AppEngine-Log-Flush-Count" - if h := w.HeaderMap.Get(hdr); h != "1" { - t.Errorf("%s header = %q, want %q", hdr, h, "1") - } - if f := atomic.LoadInt32(&f.LogFlushes); f != 0 { - t.Errorf("After HTTP response: f.LogFlushes = %d, want 0", f) - } - - // Check that the log flush eventually comes in. - time.Sleep(100 * time.Millisecond) - if f := atomic.LoadInt32(&f.LogFlushes); f != 1 { - t.Errorf("After 100ms: f.LogFlushes = %d, want 1", f) - } -} - -func TestRemoteAddr(t *testing.T) { - var addr string - http.HandleFunc("/remote_addr", func(w http.ResponseWriter, r *http.Request) { - addr = r.RemoteAddr - }) - - testCases := []struct { - headers http.Header - addr string - }{ - {http.Header{"X-Appengine-User-Ip": []string{"10.5.2.1"}}, "10.5.2.1:80"}, - {http.Header{"X-Appengine-Remote-Addr": []string{"1.2.3.4"}}, "1.2.3.4:80"}, - {http.Header{"X-Appengine-Remote-Addr": []string{"1.2.3.4:8080"}}, "1.2.3.4:8080"}, - { - http.Header{"X-Appengine-Remote-Addr": []string{"2401:fa00:9:1:7646:a0ff:fe90:ca66"}}, - "[2401:fa00:9:1:7646:a0ff:fe90:ca66]:80", - }, - { - http.Header{"X-Appengine-Remote-Addr": []string{"[::1]:http"}}, - "[::1]:http", - }, - {http.Header{}, "127.0.0.1:80"}, - } - - for _, tc := range testCases { - r := &http.Request{ - Method: "GET", - URL: &url.URL{Scheme: "http", Path: "/remote_addr"}, - Header: tc.headers, - Body: ioutil.NopCloser(bytes.NewReader(nil)), - } - handleHTTP(httptest.NewRecorder(), r) - if addr != tc.addr { - t.Errorf("Header %v, got %q, want %q", tc.headers, addr, tc.addr) - } - } -} - -var raceDetector = false - -func TestAPICallAllocations(t *testing.T) { - if raceDetector { - t.Skip("not running under race detector") - } - - // Run the test API server in a subprocess so we aren't counting its allocations. - cleanup := launchHelperProcess(t) - defer cleanup() - c := &context{ - req: &http.Request{ - Header: http.Header{ - ticketHeader: []string{"s3cr3t"}, - dapperHeader: []string{"trace-001"}, - }, - }, - } - - req := &basepb.StringProto{ - Value: proto.String("Doctor Who"), - } - res := &basepb.StringProto{} - opts := &CallOptions{ - Timeout: 100 * time.Millisecond, - } - var apiErr error - avg := testing.AllocsPerRun(100, func() { - if err := c.Call("actordb", "LookupActor", req, res, opts); err != nil && apiErr == nil { - apiErr = err // get the first error only - } - }) - if apiErr != nil { - t.Errorf("API call failed: %v", apiErr) - } - - // Lots of room for improvement... - const min, max float64 = 75, 85 - if avg < min || max < avg { - t.Errorf("Allocations per API call = %g, want in [%g,%g]", avg, min, max) - } -} - -func launchHelperProcess(t *testing.T) (cleanup func()) { - cmd := exec.Command(os.Args[0], "-test.run=TestHelperProcess") - cmd.Env = []string{"GO_WANT_HELPER_PROCESS=1"} - stdin, err := cmd.StdinPipe() - if err != nil { - t.Fatalf("StdinPipe: %v", err) - } - stdout, err := cmd.StdoutPipe() - if err != nil { - t.Fatalf("StdoutPipe: %v", err) - } - if err := cmd.Start(); err != nil { - t.Fatalf("Starting helper process: %v", err) - } - - scan := bufio.NewScanner(stdout) - ok := false - for scan.Scan() { - line := scan.Text() - if hp := strings.TrimPrefix(line, helperProcessMagic); hp != line { - parts := strings.SplitN(hp, ":", 2) - os.Setenv("API_HOST", parts[0]) - os.Setenv("API_PORT", parts[1]) - ok = true - break - } - } - if err := scan.Err(); err != nil { - t.Fatalf("Scanning helper process stdout: %v", err) - } - if !ok { - t.Fatal("Helper process never reported") - } - - return func() { - stdin.Close() - if err := cmd.Wait(); err != nil { - t.Errorf("Helper process did not exit cleanly: %v", err) - } - } -} - -const helperProcessMagic = "A lovely helper process is listening at " - -// This isn't a real test. It's used as a helper process. -func TestHelperProcess(*testing.T) { - if os.Getenv("GO_WANT_HELPER_PROCESS") != "1" { - return - } - defer os.Exit(0) - - f := &fakeAPIHandler{} - srv := httptest.NewServer(f) - defer srv.Close() - fmt.Println(helperProcessMagic + strings.TrimPrefix(srv.URL, "http://")) - - // Wait for stdin to be closed. - io.Copy(ioutil.Discard, os.Stdin) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_id.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/app_id.go deleted file mode 100644 index 11df8c07b53..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_id.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -import ( - "strings" -) - -func parseFullAppID(appid string) (partition, domain, displayID string) { - if i := strings.Index(appid, "~"); i != -1 { - partition, appid = appid[:i], appid[i+1:] - } - if i := strings.Index(appid, ":"); i != -1 { - domain, appid = appid[:i], appid[i+1:] - } - return partition, domain, appid -} - -// appID returns "appid" or "domain.com:appid". -func appID(fullAppID string) string { - _, dom, dis := parseFullAppID(fullAppID) - if dom != "" { - return dom + ":" + dis - } - return dis -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_id_test.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/app_id_test.go deleted file mode 100644 index e69195cd405..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_id_test.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2011 Google Inc. All Rights Reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -import ( - "testing" -) - -func TestAppIDParsing(t *testing.T) { - testCases := []struct { - in string - partition, domain, displayID string - }{ - {"simple-app-id", "", "", "simple-app-id"}, - {"domain.com:domain-app-id", "", "domain.com", "domain-app-id"}, - {"part~partition-app-id", "part", "", "partition-app-id"}, - {"part~domain.com:display", "part", "domain.com", "display"}, - } - - for _, tc := range testCases { - part, dom, dis := parseFullAppID(tc.in) - if part != tc.partition { - t.Errorf("partition of %q: got %q, want %q", tc.in, part, tc.partition) - } - if dom != tc.domain { - t.Errorf("domain of %q: got %q, want %q", tc.in, dom, tc.domain) - } - if dis != tc.displayID { - t.Errorf("displayID of %q: got %q, want %q", tc.in, dis, tc.displayID) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go deleted file mode 100644 index a5f3bafc216..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.pb.go +++ /dev/null @@ -1,295 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/app_identity/app_identity_service.proto -// DO NOT EDIT! - -/* -Package app_identity is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/app_identity/app_identity_service.proto - -It has these top-level messages: - AppIdentityServiceError - SignForAppRequest - SignForAppResponse - GetPublicCertificateForAppRequest - PublicCertificate - GetPublicCertificateForAppResponse - GetServiceAccountNameRequest - GetServiceAccountNameResponse - GetAccessTokenRequest - GetAccessTokenResponse - GetDefaultGcsBucketNameRequest - GetDefaultGcsBucketNameResponse -*/ -package app_identity - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type AppIdentityServiceError_ErrorCode int32 - -const ( - AppIdentityServiceError_SUCCESS AppIdentityServiceError_ErrorCode = 0 - AppIdentityServiceError_UNKNOWN_SCOPE AppIdentityServiceError_ErrorCode = 9 - AppIdentityServiceError_BLOB_TOO_LARGE AppIdentityServiceError_ErrorCode = 1000 - AppIdentityServiceError_DEADLINE_EXCEEDED AppIdentityServiceError_ErrorCode = 1001 - AppIdentityServiceError_NOT_A_VALID_APP AppIdentityServiceError_ErrorCode = 1002 - AppIdentityServiceError_UNKNOWN_ERROR AppIdentityServiceError_ErrorCode = 1003 - AppIdentityServiceError_NOT_ALLOWED AppIdentityServiceError_ErrorCode = 1005 - AppIdentityServiceError_NOT_IMPLEMENTED AppIdentityServiceError_ErrorCode = 1006 -) - -var AppIdentityServiceError_ErrorCode_name = map[int32]string{ - 0: "SUCCESS", - 9: "UNKNOWN_SCOPE", - 1000: "BLOB_TOO_LARGE", - 1001: "DEADLINE_EXCEEDED", - 1002: "NOT_A_VALID_APP", - 1003: "UNKNOWN_ERROR", - 1005: "NOT_ALLOWED", - 1006: "NOT_IMPLEMENTED", -} -var AppIdentityServiceError_ErrorCode_value = map[string]int32{ - "SUCCESS": 0, - "UNKNOWN_SCOPE": 9, - "BLOB_TOO_LARGE": 1000, - "DEADLINE_EXCEEDED": 1001, - "NOT_A_VALID_APP": 1002, - "UNKNOWN_ERROR": 1003, - "NOT_ALLOWED": 1005, - "NOT_IMPLEMENTED": 1006, -} - -func (x AppIdentityServiceError_ErrorCode) Enum() *AppIdentityServiceError_ErrorCode { - p := new(AppIdentityServiceError_ErrorCode) - *p = x - return p -} -func (x AppIdentityServiceError_ErrorCode) String() string { - return proto.EnumName(AppIdentityServiceError_ErrorCode_name, int32(x)) -} -func (x *AppIdentityServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(AppIdentityServiceError_ErrorCode_value, data, "AppIdentityServiceError_ErrorCode") - if err != nil { - return err - } - *x = AppIdentityServiceError_ErrorCode(value) - return nil -} - -type AppIdentityServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *AppIdentityServiceError) Reset() { *m = AppIdentityServiceError{} } -func (m *AppIdentityServiceError) String() string { return proto.CompactTextString(m) } -func (*AppIdentityServiceError) ProtoMessage() {} - -type SignForAppRequest struct { - BytesToSign []byte `protobuf:"bytes,1,opt,name=bytes_to_sign" json:"bytes_to_sign,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SignForAppRequest) Reset() { *m = SignForAppRequest{} } -func (m *SignForAppRequest) String() string { return proto.CompactTextString(m) } -func (*SignForAppRequest) ProtoMessage() {} - -func (m *SignForAppRequest) GetBytesToSign() []byte { - if m != nil { - return m.BytesToSign - } - return nil -} - -type SignForAppResponse struct { - KeyName *string `protobuf:"bytes,1,opt,name=key_name" json:"key_name,omitempty"` - SignatureBytes []byte `protobuf:"bytes,2,opt,name=signature_bytes" json:"signature_bytes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SignForAppResponse) Reset() { *m = SignForAppResponse{} } -func (m *SignForAppResponse) String() string { return proto.CompactTextString(m) } -func (*SignForAppResponse) ProtoMessage() {} - -func (m *SignForAppResponse) GetKeyName() string { - if m != nil && m.KeyName != nil { - return *m.KeyName - } - return "" -} - -func (m *SignForAppResponse) GetSignatureBytes() []byte { - if m != nil { - return m.SignatureBytes - } - return nil -} - -type GetPublicCertificateForAppRequest struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetPublicCertificateForAppRequest) Reset() { *m = GetPublicCertificateForAppRequest{} } -func (m *GetPublicCertificateForAppRequest) String() string { return proto.CompactTextString(m) } -func (*GetPublicCertificateForAppRequest) ProtoMessage() {} - -type PublicCertificate struct { - KeyName *string `protobuf:"bytes,1,opt,name=key_name" json:"key_name,omitempty"` - X509CertificatePem *string `protobuf:"bytes,2,opt,name=x509_certificate_pem" json:"x509_certificate_pem,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PublicCertificate) Reset() { *m = PublicCertificate{} } -func (m *PublicCertificate) String() string { return proto.CompactTextString(m) } -func (*PublicCertificate) ProtoMessage() {} - -func (m *PublicCertificate) GetKeyName() string { - if m != nil && m.KeyName != nil { - return *m.KeyName - } - return "" -} - -func (m *PublicCertificate) GetX509CertificatePem() string { - if m != nil && m.X509CertificatePem != nil { - return *m.X509CertificatePem - } - return "" -} - -type GetPublicCertificateForAppResponse struct { - PublicCertificateList []*PublicCertificate `protobuf:"bytes,1,rep,name=public_certificate_list" json:"public_certificate_list,omitempty"` - MaxClientCacheTimeInSecond *int64 `protobuf:"varint,2,opt,name=max_client_cache_time_in_second" json:"max_client_cache_time_in_second,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetPublicCertificateForAppResponse) Reset() { *m = GetPublicCertificateForAppResponse{} } -func (m *GetPublicCertificateForAppResponse) String() string { return proto.CompactTextString(m) } -func (*GetPublicCertificateForAppResponse) ProtoMessage() {} - -func (m *GetPublicCertificateForAppResponse) GetPublicCertificateList() []*PublicCertificate { - if m != nil { - return m.PublicCertificateList - } - return nil -} - -func (m *GetPublicCertificateForAppResponse) GetMaxClientCacheTimeInSecond() int64 { - if m != nil && m.MaxClientCacheTimeInSecond != nil { - return *m.MaxClientCacheTimeInSecond - } - return 0 -} - -type GetServiceAccountNameRequest struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetServiceAccountNameRequest) Reset() { *m = GetServiceAccountNameRequest{} } -func (m *GetServiceAccountNameRequest) String() string { return proto.CompactTextString(m) } -func (*GetServiceAccountNameRequest) ProtoMessage() {} - -type GetServiceAccountNameResponse struct { - ServiceAccountName *string `protobuf:"bytes,1,opt,name=service_account_name" json:"service_account_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetServiceAccountNameResponse) Reset() { *m = GetServiceAccountNameResponse{} } -func (m *GetServiceAccountNameResponse) String() string { return proto.CompactTextString(m) } -func (*GetServiceAccountNameResponse) ProtoMessage() {} - -func (m *GetServiceAccountNameResponse) GetServiceAccountName() string { - if m != nil && m.ServiceAccountName != nil { - return *m.ServiceAccountName - } - return "" -} - -type GetAccessTokenRequest struct { - Scope []string `protobuf:"bytes,1,rep,name=scope" json:"scope,omitempty"` - ServiceAccountId *int64 `protobuf:"varint,2,opt,name=service_account_id" json:"service_account_id,omitempty"` - ServiceAccountName *string `protobuf:"bytes,3,opt,name=service_account_name" json:"service_account_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetAccessTokenRequest) Reset() { *m = GetAccessTokenRequest{} } -func (m *GetAccessTokenRequest) String() string { return proto.CompactTextString(m) } -func (*GetAccessTokenRequest) ProtoMessage() {} - -func (m *GetAccessTokenRequest) GetScope() []string { - if m != nil { - return m.Scope - } - return nil -} - -func (m *GetAccessTokenRequest) GetServiceAccountId() int64 { - if m != nil && m.ServiceAccountId != nil { - return *m.ServiceAccountId - } - return 0 -} - -func (m *GetAccessTokenRequest) GetServiceAccountName() string { - if m != nil && m.ServiceAccountName != nil { - return *m.ServiceAccountName - } - return "" -} - -type GetAccessTokenResponse struct { - AccessToken *string `protobuf:"bytes,1,opt,name=access_token" json:"access_token,omitempty"` - ExpirationTime *int64 `protobuf:"varint,2,opt,name=expiration_time" json:"expiration_time,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetAccessTokenResponse) Reset() { *m = GetAccessTokenResponse{} } -func (m *GetAccessTokenResponse) String() string { return proto.CompactTextString(m) } -func (*GetAccessTokenResponse) ProtoMessage() {} - -func (m *GetAccessTokenResponse) GetAccessToken() string { - if m != nil && m.AccessToken != nil { - return *m.AccessToken - } - return "" -} - -func (m *GetAccessTokenResponse) GetExpirationTime() int64 { - if m != nil && m.ExpirationTime != nil { - return *m.ExpirationTime - } - return 0 -} - -type GetDefaultGcsBucketNameRequest struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetDefaultGcsBucketNameRequest) Reset() { *m = GetDefaultGcsBucketNameRequest{} } -func (m *GetDefaultGcsBucketNameRequest) String() string { return proto.CompactTextString(m) } -func (*GetDefaultGcsBucketNameRequest) ProtoMessage() {} - -type GetDefaultGcsBucketNameResponse struct { - DefaultGcsBucketName *string `protobuf:"bytes,1,opt,name=default_gcs_bucket_name" json:"default_gcs_bucket_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetDefaultGcsBucketNameResponse) Reset() { *m = GetDefaultGcsBucketNameResponse{} } -func (m *GetDefaultGcsBucketNameResponse) String() string { return proto.CompactTextString(m) } -func (*GetDefaultGcsBucketNameResponse) ProtoMessage() {} - -func (m *GetDefaultGcsBucketNameResponse) GetDefaultGcsBucketName() string { - if m != nil && m.DefaultGcsBucketName != nil { - return *m.DefaultGcsBucketName - } - return "" -} - -func init() { - proto.RegisterEnum("appengine.AppIdentityServiceError_ErrorCode", AppIdentityServiceError_ErrorCode_name, AppIdentityServiceError_ErrorCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.proto deleted file mode 100644 index 19610ca5b75..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/app_identity/app_identity_service.proto +++ /dev/null @@ -1,64 +0,0 @@ -syntax = "proto2"; -option go_package = "app_identity"; - -package appengine; - -message AppIdentityServiceError { - enum ErrorCode { - SUCCESS = 0; - UNKNOWN_SCOPE = 9; - BLOB_TOO_LARGE = 1000; - DEADLINE_EXCEEDED = 1001; - NOT_A_VALID_APP = 1002; - UNKNOWN_ERROR = 1003; - NOT_ALLOWED = 1005; - NOT_IMPLEMENTED = 1006; - } -} - -message SignForAppRequest { - optional bytes bytes_to_sign = 1; -} - -message SignForAppResponse { - optional string key_name = 1; - optional bytes signature_bytes = 2; -} - -message GetPublicCertificateForAppRequest { -} - -message PublicCertificate { - optional string key_name = 1; - optional string x509_certificate_pem = 2; -} - -message GetPublicCertificateForAppResponse { - repeated PublicCertificate public_certificate_list = 1; - optional int64 max_client_cache_time_in_second = 2; -} - -message GetServiceAccountNameRequest { -} - -message GetServiceAccountNameResponse { - optional string service_account_name = 1; -} - -message GetAccessTokenRequest { - repeated string scope = 1; - optional int64 service_account_id = 2; - optional string service_account_name = 3; -} - -message GetAccessTokenResponse { - optional string access_token = 1; - optional int64 expiration_time = 2; -} - -message GetDefaultGcsBucketNameRequest { -} - -message GetDefaultGcsBucketNameResponse { - optional string default_gcs_bucket_name = 1; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.pb.go deleted file mode 100644 index 9ecc29b6361..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.pb.go +++ /dev/null @@ -1,134 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/base/api_base.proto -// DO NOT EDIT! - -/* -Package base is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/base/api_base.proto - -It has these top-level messages: - StringProto - Integer32Proto - Integer64Proto - BoolProto - DoubleProto - BytesProto - VoidProto -*/ -package base - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type StringProto struct { - Value *string `protobuf:"bytes,1,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *StringProto) Reset() { *m = StringProto{} } -func (m *StringProto) String() string { return proto.CompactTextString(m) } -func (*StringProto) ProtoMessage() {} - -func (m *StringProto) GetValue() string { - if m != nil && m.Value != nil { - return *m.Value - } - return "" -} - -type Integer32Proto struct { - Value *int32 `protobuf:"varint,1,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Integer32Proto) Reset() { *m = Integer32Proto{} } -func (m *Integer32Proto) String() string { return proto.CompactTextString(m) } -func (*Integer32Proto) ProtoMessage() {} - -func (m *Integer32Proto) GetValue() int32 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type Integer64Proto struct { - Value *int64 `protobuf:"varint,1,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Integer64Proto) Reset() { *m = Integer64Proto{} } -func (m *Integer64Proto) String() string { return proto.CompactTextString(m) } -func (*Integer64Proto) ProtoMessage() {} - -func (m *Integer64Proto) GetValue() int64 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type BoolProto struct { - Value *bool `protobuf:"varint,1,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *BoolProto) Reset() { *m = BoolProto{} } -func (m *BoolProto) String() string { return proto.CompactTextString(m) } -func (*BoolProto) ProtoMessage() {} - -func (m *BoolProto) GetValue() bool { - if m != nil && m.Value != nil { - return *m.Value - } - return false -} - -type DoubleProto struct { - Value *float64 `protobuf:"fixed64,1,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DoubleProto) Reset() { *m = DoubleProto{} } -func (m *DoubleProto) String() string { return proto.CompactTextString(m) } -func (*DoubleProto) ProtoMessage() {} - -func (m *DoubleProto) GetValue() float64 { - if m != nil && m.Value != nil { - return *m.Value - } - return 0 -} - -type BytesProto struct { - Value []byte `protobuf:"bytes,1,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *BytesProto) Reset() { *m = BytesProto{} } -func (m *BytesProto) String() string { return proto.CompactTextString(m) } -func (*BytesProto) ProtoMessage() {} - -func (m *BytesProto) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -type VoidProto struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *VoidProto) Reset() { *m = VoidProto{} } -func (m *VoidProto) String() string { return proto.CompactTextString(m) } -func (*VoidProto) ProtoMessage() {} - -func init() { -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.proto deleted file mode 100644 index 56cd7a3cad0..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/base/api_base.proto +++ /dev/null @@ -1,33 +0,0 @@ -// Built-in base types for API calls. Primarily useful as return types. - -syntax = "proto2"; -option go_package = "base"; - -package appengine.base; - -message StringProto { - required string value = 1; -} - -message Integer32Proto { - required int32 value = 1; -} - -message Integer64Proto { - required int64 value = 1; -} - -message BoolProto { - required bool value = 1; -} - -message DoubleProto { - required double value = 1; -} - -message BytesProto { - required bytes value = 1 [ctype=CORD]; -} - -message VoidProto { -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.pb.go deleted file mode 100644 index 1b5a6257123..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.pb.go +++ /dev/null @@ -1,153 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/channel/channel_service.proto -// DO NOT EDIT! - -/* -Package channel is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/channel/channel_service.proto - -It has these top-level messages: - ChannelServiceError - CreateChannelRequest - CreateChannelResponse - SendMessageRequest -*/ -package channel - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type ChannelServiceError_ErrorCode int32 - -const ( - ChannelServiceError_OK ChannelServiceError_ErrorCode = 0 - ChannelServiceError_INTERNAL_ERROR ChannelServiceError_ErrorCode = 1 - ChannelServiceError_INVALID_CHANNEL_KEY ChannelServiceError_ErrorCode = 2 - ChannelServiceError_BAD_MESSAGE ChannelServiceError_ErrorCode = 3 - ChannelServiceError_INVALID_CHANNEL_TOKEN_DURATION ChannelServiceError_ErrorCode = 4 - ChannelServiceError_APPID_ALIAS_REQUIRED ChannelServiceError_ErrorCode = 5 -) - -var ChannelServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "INTERNAL_ERROR", - 2: "INVALID_CHANNEL_KEY", - 3: "BAD_MESSAGE", - 4: "INVALID_CHANNEL_TOKEN_DURATION", - 5: "APPID_ALIAS_REQUIRED", -} -var ChannelServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "INTERNAL_ERROR": 1, - "INVALID_CHANNEL_KEY": 2, - "BAD_MESSAGE": 3, - "INVALID_CHANNEL_TOKEN_DURATION": 4, - "APPID_ALIAS_REQUIRED": 5, -} - -func (x ChannelServiceError_ErrorCode) Enum() *ChannelServiceError_ErrorCode { - p := new(ChannelServiceError_ErrorCode) - *p = x - return p -} -func (x ChannelServiceError_ErrorCode) String() string { - return proto.EnumName(ChannelServiceError_ErrorCode_name, int32(x)) -} -func (x *ChannelServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(ChannelServiceError_ErrorCode_value, data, "ChannelServiceError_ErrorCode") - if err != nil { - return err - } - *x = ChannelServiceError_ErrorCode(value) - return nil -} - -type ChannelServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *ChannelServiceError) Reset() { *m = ChannelServiceError{} } -func (m *ChannelServiceError) String() string { return proto.CompactTextString(m) } -func (*ChannelServiceError) ProtoMessage() {} - -type CreateChannelRequest struct { - ApplicationKey *string `protobuf:"bytes,1,req,name=application_key" json:"application_key,omitempty"` - DurationMinutes *int32 `protobuf:"varint,2,opt,name=duration_minutes" json:"duration_minutes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CreateChannelRequest) Reset() { *m = CreateChannelRequest{} } -func (m *CreateChannelRequest) String() string { return proto.CompactTextString(m) } -func (*CreateChannelRequest) ProtoMessage() {} - -func (m *CreateChannelRequest) GetApplicationKey() string { - if m != nil && m.ApplicationKey != nil { - return *m.ApplicationKey - } - return "" -} - -func (m *CreateChannelRequest) GetDurationMinutes() int32 { - if m != nil && m.DurationMinutes != nil { - return *m.DurationMinutes - } - return 0 -} - -type CreateChannelResponse struct { - Token *string `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"` - DurationMinutes *int32 `protobuf:"varint,3,opt,name=duration_minutes" json:"duration_minutes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CreateChannelResponse) Reset() { *m = CreateChannelResponse{} } -func (m *CreateChannelResponse) String() string { return proto.CompactTextString(m) } -func (*CreateChannelResponse) ProtoMessage() {} - -func (m *CreateChannelResponse) GetToken() string { - if m != nil && m.Token != nil { - return *m.Token - } - return "" -} - -func (m *CreateChannelResponse) GetDurationMinutes() int32 { - if m != nil && m.DurationMinutes != nil { - return *m.DurationMinutes - } - return 0 -} - -type SendMessageRequest struct { - ApplicationKey *string `protobuf:"bytes,1,req,name=application_key" json:"application_key,omitempty"` - Message *string `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SendMessageRequest) Reset() { *m = SendMessageRequest{} } -func (m *SendMessageRequest) String() string { return proto.CompactTextString(m) } -func (*SendMessageRequest) ProtoMessage() {} - -func (m *SendMessageRequest) GetApplicationKey() string { - if m != nil && m.ApplicationKey != nil { - return *m.ApplicationKey - } - return "" -} - -func (m *SendMessageRequest) GetMessage() string { - if m != nil && m.Message != nil { - return *m.Message - } - return "" -} - -func init() { - proto.RegisterEnum("appengine.ChannelServiceError_ErrorCode", ChannelServiceError_ErrorCode_name, ChannelServiceError_ErrorCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.proto deleted file mode 100644 index 2b5a918ca65..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/channel/channel_service.proto +++ /dev/null @@ -1,30 +0,0 @@ -syntax = "proto2"; -option go_package = "channel"; - -package appengine; - -message ChannelServiceError { - enum ErrorCode { - OK = 0; - INTERNAL_ERROR = 1; - INVALID_CHANNEL_KEY = 2; - BAD_MESSAGE = 3; - INVALID_CHANNEL_TOKEN_DURATION = 4; - APPID_ALIAS_REQUIRED = 5; - } -} - -message CreateChannelRequest { - required string application_key = 1; - optional int32 duration_minutes = 2; -} - -message CreateChannelResponse { - optional string token = 2; - optional int32 duration_minutes = 3; -} - -message SendMessageRequest { - required string application_key = 1; - required string message = 2; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go deleted file mode 100644 index f4fef0de0f9..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +++ /dev/null @@ -1,2787 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/datastore/datastore_v3.proto -// DO NOT EDIT! - -/* -Package datastore is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/datastore/datastore_v3.proto - -It has these top-level messages: - Action - PropertyValue - Property - Path - Reference - User - EntityProto - CompositeProperty - Index - CompositeIndex - IndexPostfix - IndexPosition - Snapshot - InternalHeader - Transaction - Query - CompiledQuery - CompiledCursor - Cursor - Error - Cost - GetRequest - GetResponse - PutRequest - PutResponse - TouchRequest - TouchResponse - DeleteRequest - DeleteResponse - NextRequest - QueryResult - AllocateIdsRequest - AllocateIdsResponse - CompositeIndices - AddActionsRequest - AddActionsResponse - BeginTransactionRequest - CommitResponse -*/ -package datastore - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type Property_Meaning int32 - -const ( - Property_NO_MEANING Property_Meaning = 0 - Property_BLOB Property_Meaning = 14 - Property_TEXT Property_Meaning = 15 - Property_BYTESTRING Property_Meaning = 16 - Property_ATOM_CATEGORY Property_Meaning = 1 - Property_ATOM_LINK Property_Meaning = 2 - Property_ATOM_TITLE Property_Meaning = 3 - Property_ATOM_CONTENT Property_Meaning = 4 - Property_ATOM_SUMMARY Property_Meaning = 5 - Property_ATOM_AUTHOR Property_Meaning = 6 - Property_GD_WHEN Property_Meaning = 7 - Property_GD_EMAIL Property_Meaning = 8 - Property_GEORSS_POINT Property_Meaning = 9 - Property_GD_IM Property_Meaning = 10 - Property_GD_PHONENUMBER Property_Meaning = 11 - Property_GD_POSTALADDRESS Property_Meaning = 12 - Property_GD_RATING Property_Meaning = 13 - Property_BLOBKEY Property_Meaning = 17 - Property_ENTITY_PROTO Property_Meaning = 19 - Property_INDEX_VALUE Property_Meaning = 18 -) - -var Property_Meaning_name = map[int32]string{ - 0: "NO_MEANING", - 14: "BLOB", - 15: "TEXT", - 16: "BYTESTRING", - 1: "ATOM_CATEGORY", - 2: "ATOM_LINK", - 3: "ATOM_TITLE", - 4: "ATOM_CONTENT", - 5: "ATOM_SUMMARY", - 6: "ATOM_AUTHOR", - 7: "GD_WHEN", - 8: "GD_EMAIL", - 9: "GEORSS_POINT", - 10: "GD_IM", - 11: "GD_PHONENUMBER", - 12: "GD_POSTALADDRESS", - 13: "GD_RATING", - 17: "BLOBKEY", - 19: "ENTITY_PROTO", - 18: "INDEX_VALUE", -} -var Property_Meaning_value = map[string]int32{ - "NO_MEANING": 0, - "BLOB": 14, - "TEXT": 15, - "BYTESTRING": 16, - "ATOM_CATEGORY": 1, - "ATOM_LINK": 2, - "ATOM_TITLE": 3, - "ATOM_CONTENT": 4, - "ATOM_SUMMARY": 5, - "ATOM_AUTHOR": 6, - "GD_WHEN": 7, - "GD_EMAIL": 8, - "GEORSS_POINT": 9, - "GD_IM": 10, - "GD_PHONENUMBER": 11, - "GD_POSTALADDRESS": 12, - "GD_RATING": 13, - "BLOBKEY": 17, - "ENTITY_PROTO": 19, - "INDEX_VALUE": 18, -} - -func (x Property_Meaning) Enum() *Property_Meaning { - p := new(Property_Meaning) - *p = x - return p -} -func (x Property_Meaning) String() string { - return proto.EnumName(Property_Meaning_name, int32(x)) -} -func (x *Property_Meaning) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Property_Meaning_value, data, "Property_Meaning") - if err != nil { - return err - } - *x = Property_Meaning(value) - return nil -} - -type Property_FtsTokenizationOption int32 - -const ( - Property_HTML Property_FtsTokenizationOption = 1 - Property_ATOM Property_FtsTokenizationOption = 2 -) - -var Property_FtsTokenizationOption_name = map[int32]string{ - 1: "HTML", - 2: "ATOM", -} -var Property_FtsTokenizationOption_value = map[string]int32{ - "HTML": 1, - "ATOM": 2, -} - -func (x Property_FtsTokenizationOption) Enum() *Property_FtsTokenizationOption { - p := new(Property_FtsTokenizationOption) - *p = x - return p -} -func (x Property_FtsTokenizationOption) String() string { - return proto.EnumName(Property_FtsTokenizationOption_name, int32(x)) -} -func (x *Property_FtsTokenizationOption) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Property_FtsTokenizationOption_value, data, "Property_FtsTokenizationOption") - if err != nil { - return err - } - *x = Property_FtsTokenizationOption(value) - return nil -} - -type EntityProto_Kind int32 - -const ( - EntityProto_GD_CONTACT EntityProto_Kind = 1 - EntityProto_GD_EVENT EntityProto_Kind = 2 - EntityProto_GD_MESSAGE EntityProto_Kind = 3 -) - -var EntityProto_Kind_name = map[int32]string{ - 1: "GD_CONTACT", - 2: "GD_EVENT", - 3: "GD_MESSAGE", -} -var EntityProto_Kind_value = map[string]int32{ - "GD_CONTACT": 1, - "GD_EVENT": 2, - "GD_MESSAGE": 3, -} - -func (x EntityProto_Kind) Enum() *EntityProto_Kind { - p := new(EntityProto_Kind) - *p = x - return p -} -func (x EntityProto_Kind) String() string { - return proto.EnumName(EntityProto_Kind_name, int32(x)) -} -func (x *EntityProto_Kind) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(EntityProto_Kind_value, data, "EntityProto_Kind") - if err != nil { - return err - } - *x = EntityProto_Kind(value) - return nil -} - -type Index_Property_Direction int32 - -const ( - Index_Property_ASCENDING Index_Property_Direction = 1 - Index_Property_DESCENDING Index_Property_Direction = 2 -) - -var Index_Property_Direction_name = map[int32]string{ - 1: "ASCENDING", - 2: "DESCENDING", -} -var Index_Property_Direction_value = map[string]int32{ - "ASCENDING": 1, - "DESCENDING": 2, -} - -func (x Index_Property_Direction) Enum() *Index_Property_Direction { - p := new(Index_Property_Direction) - *p = x - return p -} -func (x Index_Property_Direction) String() string { - return proto.EnumName(Index_Property_Direction_name, int32(x)) -} -func (x *Index_Property_Direction) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Index_Property_Direction_value, data, "Index_Property_Direction") - if err != nil { - return err - } - *x = Index_Property_Direction(value) - return nil -} - -type CompositeIndex_State int32 - -const ( - CompositeIndex_WRITE_ONLY CompositeIndex_State = 1 - CompositeIndex_READ_WRITE CompositeIndex_State = 2 - CompositeIndex_DELETED CompositeIndex_State = 3 - CompositeIndex_ERROR CompositeIndex_State = 4 -) - -var CompositeIndex_State_name = map[int32]string{ - 1: "WRITE_ONLY", - 2: "READ_WRITE", - 3: "DELETED", - 4: "ERROR", -} -var CompositeIndex_State_value = map[string]int32{ - "WRITE_ONLY": 1, - "READ_WRITE": 2, - "DELETED": 3, - "ERROR": 4, -} - -func (x CompositeIndex_State) Enum() *CompositeIndex_State { - p := new(CompositeIndex_State) - *p = x - return p -} -func (x CompositeIndex_State) String() string { - return proto.EnumName(CompositeIndex_State_name, int32(x)) -} -func (x *CompositeIndex_State) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(CompositeIndex_State_value, data, "CompositeIndex_State") - if err != nil { - return err - } - *x = CompositeIndex_State(value) - return nil -} - -type Snapshot_Status int32 - -const ( - Snapshot_INACTIVE Snapshot_Status = 0 - Snapshot_ACTIVE Snapshot_Status = 1 -) - -var Snapshot_Status_name = map[int32]string{ - 0: "INACTIVE", - 1: "ACTIVE", -} -var Snapshot_Status_value = map[string]int32{ - "INACTIVE": 0, - "ACTIVE": 1, -} - -func (x Snapshot_Status) Enum() *Snapshot_Status { - p := new(Snapshot_Status) - *p = x - return p -} -func (x Snapshot_Status) String() string { - return proto.EnumName(Snapshot_Status_name, int32(x)) -} -func (x *Snapshot_Status) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Snapshot_Status_value, data, "Snapshot_Status") - if err != nil { - return err - } - *x = Snapshot_Status(value) - return nil -} - -type Query_Hint int32 - -const ( - Query_ORDER_FIRST Query_Hint = 1 - Query_ANCESTOR_FIRST Query_Hint = 2 - Query_FILTER_FIRST Query_Hint = 3 -) - -var Query_Hint_name = map[int32]string{ - 1: "ORDER_FIRST", - 2: "ANCESTOR_FIRST", - 3: "FILTER_FIRST", -} -var Query_Hint_value = map[string]int32{ - "ORDER_FIRST": 1, - "ANCESTOR_FIRST": 2, - "FILTER_FIRST": 3, -} - -func (x Query_Hint) Enum() *Query_Hint { - p := new(Query_Hint) - *p = x - return p -} -func (x Query_Hint) String() string { - return proto.EnumName(Query_Hint_name, int32(x)) -} -func (x *Query_Hint) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Query_Hint_value, data, "Query_Hint") - if err != nil { - return err - } - *x = Query_Hint(value) - return nil -} - -type Query_Filter_Operator int32 - -const ( - Query_Filter_LESS_THAN Query_Filter_Operator = 1 - Query_Filter_LESS_THAN_OR_EQUAL Query_Filter_Operator = 2 - Query_Filter_GREATER_THAN Query_Filter_Operator = 3 - Query_Filter_GREATER_THAN_OR_EQUAL Query_Filter_Operator = 4 - Query_Filter_EQUAL Query_Filter_Operator = 5 - Query_Filter_IN Query_Filter_Operator = 6 - Query_Filter_EXISTS Query_Filter_Operator = 7 -) - -var Query_Filter_Operator_name = map[int32]string{ - 1: "LESS_THAN", - 2: "LESS_THAN_OR_EQUAL", - 3: "GREATER_THAN", - 4: "GREATER_THAN_OR_EQUAL", - 5: "EQUAL", - 6: "IN", - 7: "EXISTS", -} -var Query_Filter_Operator_value = map[string]int32{ - "LESS_THAN": 1, - "LESS_THAN_OR_EQUAL": 2, - "GREATER_THAN": 3, - "GREATER_THAN_OR_EQUAL": 4, - "EQUAL": 5, - "IN": 6, - "EXISTS": 7, -} - -func (x Query_Filter_Operator) Enum() *Query_Filter_Operator { - p := new(Query_Filter_Operator) - *p = x - return p -} -func (x Query_Filter_Operator) String() string { - return proto.EnumName(Query_Filter_Operator_name, int32(x)) -} -func (x *Query_Filter_Operator) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Query_Filter_Operator_value, data, "Query_Filter_Operator") - if err != nil { - return err - } - *x = Query_Filter_Operator(value) - return nil -} - -type Query_Order_Direction int32 - -const ( - Query_Order_ASCENDING Query_Order_Direction = 1 - Query_Order_DESCENDING Query_Order_Direction = 2 -) - -var Query_Order_Direction_name = map[int32]string{ - 1: "ASCENDING", - 2: "DESCENDING", -} -var Query_Order_Direction_value = map[string]int32{ - "ASCENDING": 1, - "DESCENDING": 2, -} - -func (x Query_Order_Direction) Enum() *Query_Order_Direction { - p := new(Query_Order_Direction) - *p = x - return p -} -func (x Query_Order_Direction) String() string { - return proto.EnumName(Query_Order_Direction_name, int32(x)) -} -func (x *Query_Order_Direction) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Query_Order_Direction_value, data, "Query_Order_Direction") - if err != nil { - return err - } - *x = Query_Order_Direction(value) - return nil -} - -type Error_ErrorCode int32 - -const ( - Error_BAD_REQUEST Error_ErrorCode = 1 - Error_CONCURRENT_TRANSACTION Error_ErrorCode = 2 - Error_INTERNAL_ERROR Error_ErrorCode = 3 - Error_NEED_INDEX Error_ErrorCode = 4 - Error_TIMEOUT Error_ErrorCode = 5 - Error_PERMISSION_DENIED Error_ErrorCode = 6 - Error_BIGTABLE_ERROR Error_ErrorCode = 7 - Error_COMMITTED_BUT_STILL_APPLYING Error_ErrorCode = 8 - Error_CAPABILITY_DISABLED Error_ErrorCode = 9 - Error_TRY_ALTERNATE_BACKEND Error_ErrorCode = 10 - Error_SAFE_TIME_TOO_OLD Error_ErrorCode = 11 -) - -var Error_ErrorCode_name = map[int32]string{ - 1: "BAD_REQUEST", - 2: "CONCURRENT_TRANSACTION", - 3: "INTERNAL_ERROR", - 4: "NEED_INDEX", - 5: "TIMEOUT", - 6: "PERMISSION_DENIED", - 7: "BIGTABLE_ERROR", - 8: "COMMITTED_BUT_STILL_APPLYING", - 9: "CAPABILITY_DISABLED", - 10: "TRY_ALTERNATE_BACKEND", - 11: "SAFE_TIME_TOO_OLD", -} -var Error_ErrorCode_value = map[string]int32{ - "BAD_REQUEST": 1, - "CONCURRENT_TRANSACTION": 2, - "INTERNAL_ERROR": 3, - "NEED_INDEX": 4, - "TIMEOUT": 5, - "PERMISSION_DENIED": 6, - "BIGTABLE_ERROR": 7, - "COMMITTED_BUT_STILL_APPLYING": 8, - "CAPABILITY_DISABLED": 9, - "TRY_ALTERNATE_BACKEND": 10, - "SAFE_TIME_TOO_OLD": 11, -} - -func (x Error_ErrorCode) Enum() *Error_ErrorCode { - p := new(Error_ErrorCode) - *p = x - return p -} -func (x Error_ErrorCode) String() string { - return proto.EnumName(Error_ErrorCode_name, int32(x)) -} -func (x *Error_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Error_ErrorCode_value, data, "Error_ErrorCode") - if err != nil { - return err - } - *x = Error_ErrorCode(value) - return nil -} - -type PutRequest_AutoIdPolicy int32 - -const ( - PutRequest_CURRENT PutRequest_AutoIdPolicy = 0 - PutRequest_SEQUENTIAL PutRequest_AutoIdPolicy = 1 -) - -var PutRequest_AutoIdPolicy_name = map[int32]string{ - 0: "CURRENT", - 1: "SEQUENTIAL", -} -var PutRequest_AutoIdPolicy_value = map[string]int32{ - "CURRENT": 0, - "SEQUENTIAL": 1, -} - -func (x PutRequest_AutoIdPolicy) Enum() *PutRequest_AutoIdPolicy { - p := new(PutRequest_AutoIdPolicy) - *p = x - return p -} -func (x PutRequest_AutoIdPolicy) String() string { - return proto.EnumName(PutRequest_AutoIdPolicy_name, int32(x)) -} -func (x *PutRequest_AutoIdPolicy) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(PutRequest_AutoIdPolicy_value, data, "PutRequest_AutoIdPolicy") - if err != nil { - return err - } - *x = PutRequest_AutoIdPolicy(value) - return nil -} - -type Action struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *Action) Reset() { *m = Action{} } -func (m *Action) String() string { return proto.CompactTextString(m) } -func (*Action) ProtoMessage() {} - -type PropertyValue struct { - Int64Value *int64 `protobuf:"varint,1,opt,name=int64Value" json:"int64Value,omitempty"` - BooleanValue *bool `protobuf:"varint,2,opt,name=booleanValue" json:"booleanValue,omitempty"` - StringValue *string `protobuf:"bytes,3,opt,name=stringValue" json:"stringValue,omitempty"` - DoubleValue *float64 `protobuf:"fixed64,4,opt,name=doubleValue" json:"doubleValue,omitempty"` - Pointvalue *PropertyValue_PointValue `protobuf:"group,5,opt,name=PointValue" json:"pointvalue,omitempty"` - Uservalue *PropertyValue_UserValue `protobuf:"group,8,opt,name=UserValue" json:"uservalue,omitempty"` - Referencevalue *PropertyValue_ReferenceValue `protobuf:"group,12,opt,name=ReferenceValue" json:"referencevalue,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PropertyValue) Reset() { *m = PropertyValue{} } -func (m *PropertyValue) String() string { return proto.CompactTextString(m) } -func (*PropertyValue) ProtoMessage() {} - -func (m *PropertyValue) GetInt64Value() int64 { - if m != nil && m.Int64Value != nil { - return *m.Int64Value - } - return 0 -} - -func (m *PropertyValue) GetBooleanValue() bool { - if m != nil && m.BooleanValue != nil { - return *m.BooleanValue - } - return false -} - -func (m *PropertyValue) GetStringValue() string { - if m != nil && m.StringValue != nil { - return *m.StringValue - } - return "" -} - -func (m *PropertyValue) GetDoubleValue() float64 { - if m != nil && m.DoubleValue != nil { - return *m.DoubleValue - } - return 0 -} - -func (m *PropertyValue) GetPointvalue() *PropertyValue_PointValue { - if m != nil { - return m.Pointvalue - } - return nil -} - -func (m *PropertyValue) GetUservalue() *PropertyValue_UserValue { - if m != nil { - return m.Uservalue - } - return nil -} - -func (m *PropertyValue) GetReferencevalue() *PropertyValue_ReferenceValue { - if m != nil { - return m.Referencevalue - } - return nil -} - -type PropertyValue_PointValue struct { - X *float64 `protobuf:"fixed64,6,req,name=x" json:"x,omitempty"` - Y *float64 `protobuf:"fixed64,7,req,name=y" json:"y,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PropertyValue_PointValue) Reset() { *m = PropertyValue_PointValue{} } -func (m *PropertyValue_PointValue) String() string { return proto.CompactTextString(m) } -func (*PropertyValue_PointValue) ProtoMessage() {} - -func (m *PropertyValue_PointValue) GetX() float64 { - if m != nil && m.X != nil { - return *m.X - } - return 0 -} - -func (m *PropertyValue_PointValue) GetY() float64 { - if m != nil && m.Y != nil { - return *m.Y - } - return 0 -} - -type PropertyValue_UserValue struct { - Email *string `protobuf:"bytes,9,req,name=email" json:"email,omitempty"` - AuthDomain *string `protobuf:"bytes,10,req,name=auth_domain" json:"auth_domain,omitempty"` - Nickname *string `protobuf:"bytes,11,opt,name=nickname" json:"nickname,omitempty"` - FederatedIdentity *string `protobuf:"bytes,21,opt,name=federated_identity" json:"federated_identity,omitempty"` - FederatedProvider *string `protobuf:"bytes,22,opt,name=federated_provider" json:"federated_provider,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PropertyValue_UserValue) Reset() { *m = PropertyValue_UserValue{} } -func (m *PropertyValue_UserValue) String() string { return proto.CompactTextString(m) } -func (*PropertyValue_UserValue) ProtoMessage() {} - -func (m *PropertyValue_UserValue) GetEmail() string { - if m != nil && m.Email != nil { - return *m.Email - } - return "" -} - -func (m *PropertyValue_UserValue) GetAuthDomain() string { - if m != nil && m.AuthDomain != nil { - return *m.AuthDomain - } - return "" -} - -func (m *PropertyValue_UserValue) GetNickname() string { - if m != nil && m.Nickname != nil { - return *m.Nickname - } - return "" -} - -func (m *PropertyValue_UserValue) GetFederatedIdentity() string { - if m != nil && m.FederatedIdentity != nil { - return *m.FederatedIdentity - } - return "" -} - -func (m *PropertyValue_UserValue) GetFederatedProvider() string { - if m != nil && m.FederatedProvider != nil { - return *m.FederatedProvider - } - return "" -} - -type PropertyValue_ReferenceValue struct { - App *string `protobuf:"bytes,13,req,name=app" json:"app,omitempty"` - NameSpace *string `protobuf:"bytes,20,opt,name=name_space" json:"name_space,omitempty"` - Pathelement []*PropertyValue_ReferenceValue_PathElement `protobuf:"group,14,rep,name=PathElement" json:"pathelement,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PropertyValue_ReferenceValue) Reset() { *m = PropertyValue_ReferenceValue{} } -func (m *PropertyValue_ReferenceValue) String() string { return proto.CompactTextString(m) } -func (*PropertyValue_ReferenceValue) ProtoMessage() {} - -func (m *PropertyValue_ReferenceValue) GetApp() string { - if m != nil && m.App != nil { - return *m.App - } - return "" -} - -func (m *PropertyValue_ReferenceValue) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *PropertyValue_ReferenceValue) GetPathelement() []*PropertyValue_ReferenceValue_PathElement { - if m != nil { - return m.Pathelement - } - return nil -} - -type PropertyValue_ReferenceValue_PathElement struct { - Type *string `protobuf:"bytes,15,req,name=type" json:"type,omitempty"` - Id *int64 `protobuf:"varint,16,opt,name=id" json:"id,omitempty"` - Name *string `protobuf:"bytes,17,opt,name=name" json:"name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PropertyValue_ReferenceValue_PathElement) Reset() { - *m = PropertyValue_ReferenceValue_PathElement{} -} -func (m *PropertyValue_ReferenceValue_PathElement) String() string { return proto.CompactTextString(m) } -func (*PropertyValue_ReferenceValue_PathElement) ProtoMessage() {} - -func (m *PropertyValue_ReferenceValue_PathElement) GetType() string { - if m != nil && m.Type != nil { - return *m.Type - } - return "" -} - -func (m *PropertyValue_ReferenceValue_PathElement) GetId() int64 { - if m != nil && m.Id != nil { - return *m.Id - } - return 0 -} - -func (m *PropertyValue_ReferenceValue_PathElement) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -type Property struct { - Meaning *Property_Meaning `protobuf:"varint,1,opt,name=meaning,enum=appengine.Property_Meaning,def=0" json:"meaning,omitempty"` - MeaningUri *string `protobuf:"bytes,2,opt,name=meaning_uri" json:"meaning_uri,omitempty"` - Name *string `protobuf:"bytes,3,req,name=name" json:"name,omitempty"` - Value *PropertyValue `protobuf:"bytes,5,req,name=value" json:"value,omitempty"` - Multiple *bool `protobuf:"varint,4,req,name=multiple" json:"multiple,omitempty"` - Searchable *bool `protobuf:"varint,6,opt,name=searchable,def=0" json:"searchable,omitempty"` - FtsTokenizationOption *Property_FtsTokenizationOption `protobuf:"varint,8,opt,name=fts_tokenization_option,enum=appengine.Property_FtsTokenizationOption" json:"fts_tokenization_option,omitempty"` - Locale *string `protobuf:"bytes,9,opt,name=locale,def=en" json:"locale,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Property) Reset() { *m = Property{} } -func (m *Property) String() string { return proto.CompactTextString(m) } -func (*Property) ProtoMessage() {} - -const Default_Property_Meaning Property_Meaning = Property_NO_MEANING -const Default_Property_Searchable bool = false -const Default_Property_Locale string = "en" - -func (m *Property) GetMeaning() Property_Meaning { - if m != nil && m.Meaning != nil { - return *m.Meaning - } - return Default_Property_Meaning -} - -func (m *Property) GetMeaningUri() string { - if m != nil && m.MeaningUri != nil { - return *m.MeaningUri - } - return "" -} - -func (m *Property) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *Property) GetValue() *PropertyValue { - if m != nil { - return m.Value - } - return nil -} - -func (m *Property) GetMultiple() bool { - if m != nil && m.Multiple != nil { - return *m.Multiple - } - return false -} - -func (m *Property) GetSearchable() bool { - if m != nil && m.Searchable != nil { - return *m.Searchable - } - return Default_Property_Searchable -} - -func (m *Property) GetFtsTokenizationOption() Property_FtsTokenizationOption { - if m != nil && m.FtsTokenizationOption != nil { - return *m.FtsTokenizationOption - } - return Property_HTML -} - -func (m *Property) GetLocale() string { - if m != nil && m.Locale != nil { - return *m.Locale - } - return Default_Property_Locale -} - -type Path struct { - Element []*Path_Element `protobuf:"group,1,rep" json:"element,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Path) Reset() { *m = Path{} } -func (m *Path) String() string { return proto.CompactTextString(m) } -func (*Path) ProtoMessage() {} - -func (m *Path) GetElement() []*Path_Element { - if m != nil { - return m.Element - } - return nil -} - -type Path_Element struct { - Type *string `protobuf:"bytes,2,req,name=type" json:"type,omitempty"` - Id *int64 `protobuf:"varint,3,opt,name=id" json:"id,omitempty"` - Name *string `protobuf:"bytes,4,opt,name=name" json:"name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Path_Element) Reset() { *m = Path_Element{} } -func (m *Path_Element) String() string { return proto.CompactTextString(m) } -func (*Path_Element) ProtoMessage() {} - -func (m *Path_Element) GetType() string { - if m != nil && m.Type != nil { - return *m.Type - } - return "" -} - -func (m *Path_Element) GetId() int64 { - if m != nil && m.Id != nil { - return *m.Id - } - return 0 -} - -func (m *Path_Element) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -type Reference struct { - App *string `protobuf:"bytes,13,req,name=app" json:"app,omitempty"` - NameSpace *string `protobuf:"bytes,20,opt,name=name_space" json:"name_space,omitempty"` - Path *Path `protobuf:"bytes,14,req,name=path" json:"path,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Reference) Reset() { *m = Reference{} } -func (m *Reference) String() string { return proto.CompactTextString(m) } -func (*Reference) ProtoMessage() {} - -func (m *Reference) GetApp() string { - if m != nil && m.App != nil { - return *m.App - } - return "" -} - -func (m *Reference) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *Reference) GetPath() *Path { - if m != nil { - return m.Path - } - return nil -} - -type User struct { - Email *string `protobuf:"bytes,1,req,name=email" json:"email,omitempty"` - AuthDomain *string `protobuf:"bytes,2,req,name=auth_domain" json:"auth_domain,omitempty"` - Nickname *string `protobuf:"bytes,3,opt,name=nickname" json:"nickname,omitempty"` - FederatedIdentity *string `protobuf:"bytes,6,opt,name=federated_identity" json:"federated_identity,omitempty"` - FederatedProvider *string `protobuf:"bytes,7,opt,name=federated_provider" json:"federated_provider,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *User) Reset() { *m = User{} } -func (m *User) String() string { return proto.CompactTextString(m) } -func (*User) ProtoMessage() {} - -func (m *User) GetEmail() string { - if m != nil && m.Email != nil { - return *m.Email - } - return "" -} - -func (m *User) GetAuthDomain() string { - if m != nil && m.AuthDomain != nil { - return *m.AuthDomain - } - return "" -} - -func (m *User) GetNickname() string { - if m != nil && m.Nickname != nil { - return *m.Nickname - } - return "" -} - -func (m *User) GetFederatedIdentity() string { - if m != nil && m.FederatedIdentity != nil { - return *m.FederatedIdentity - } - return "" -} - -func (m *User) GetFederatedProvider() string { - if m != nil && m.FederatedProvider != nil { - return *m.FederatedProvider - } - return "" -} - -type EntityProto struct { - Key *Reference `protobuf:"bytes,13,req,name=key" json:"key,omitempty"` - EntityGroup *Path `protobuf:"bytes,16,req,name=entity_group" json:"entity_group,omitempty"` - Owner *User `protobuf:"bytes,17,opt,name=owner" json:"owner,omitempty"` - Kind *EntityProto_Kind `protobuf:"varint,4,opt,name=kind,enum=appengine.EntityProto_Kind" json:"kind,omitempty"` - KindUri *string `protobuf:"bytes,5,opt,name=kind_uri" json:"kind_uri,omitempty"` - Property []*Property `protobuf:"bytes,14,rep,name=property" json:"property,omitempty"` - RawProperty []*Property `protobuf:"bytes,15,rep,name=raw_property" json:"raw_property,omitempty"` - Rank *int32 `protobuf:"varint,18,opt,name=rank" json:"rank,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *EntityProto) Reset() { *m = EntityProto{} } -func (m *EntityProto) String() string { return proto.CompactTextString(m) } -func (*EntityProto) ProtoMessage() {} - -func (m *EntityProto) GetKey() *Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *EntityProto) GetEntityGroup() *Path { - if m != nil { - return m.EntityGroup - } - return nil -} - -func (m *EntityProto) GetOwner() *User { - if m != nil { - return m.Owner - } - return nil -} - -func (m *EntityProto) GetKind() EntityProto_Kind { - if m != nil && m.Kind != nil { - return *m.Kind - } - return EntityProto_GD_CONTACT -} - -func (m *EntityProto) GetKindUri() string { - if m != nil && m.KindUri != nil { - return *m.KindUri - } - return "" -} - -func (m *EntityProto) GetProperty() []*Property { - if m != nil { - return m.Property - } - return nil -} - -func (m *EntityProto) GetRawProperty() []*Property { - if m != nil { - return m.RawProperty - } - return nil -} - -func (m *EntityProto) GetRank() int32 { - if m != nil && m.Rank != nil { - return *m.Rank - } - return 0 -} - -type CompositeProperty struct { - IndexId *int64 `protobuf:"varint,1,req,name=index_id" json:"index_id,omitempty"` - Value []string `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompositeProperty) Reset() { *m = CompositeProperty{} } -func (m *CompositeProperty) String() string { return proto.CompactTextString(m) } -func (*CompositeProperty) ProtoMessage() {} - -func (m *CompositeProperty) GetIndexId() int64 { - if m != nil && m.IndexId != nil { - return *m.IndexId - } - return 0 -} - -func (m *CompositeProperty) GetValue() []string { - if m != nil { - return m.Value - } - return nil -} - -type Index struct { - EntityType *string `protobuf:"bytes,1,req,name=entity_type" json:"entity_type,omitempty"` - Ancestor *bool `protobuf:"varint,5,req,name=ancestor" json:"ancestor,omitempty"` - Property []*Index_Property `protobuf:"group,2,rep" json:"property,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Index) Reset() { *m = Index{} } -func (m *Index) String() string { return proto.CompactTextString(m) } -func (*Index) ProtoMessage() {} - -func (m *Index) GetEntityType() string { - if m != nil && m.EntityType != nil { - return *m.EntityType - } - return "" -} - -func (m *Index) GetAncestor() bool { - if m != nil && m.Ancestor != nil { - return *m.Ancestor - } - return false -} - -func (m *Index) GetProperty() []*Index_Property { - if m != nil { - return m.Property - } - return nil -} - -type Index_Property struct { - Name *string `protobuf:"bytes,3,req,name=name" json:"name,omitempty"` - Direction *Index_Property_Direction `protobuf:"varint,4,opt,name=direction,enum=appengine.Index_Property_Direction,def=1" json:"direction,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Index_Property) Reset() { *m = Index_Property{} } -func (m *Index_Property) String() string { return proto.CompactTextString(m) } -func (*Index_Property) ProtoMessage() {} - -const Default_Index_Property_Direction Index_Property_Direction = Index_Property_ASCENDING - -func (m *Index_Property) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *Index_Property) GetDirection() Index_Property_Direction { - if m != nil && m.Direction != nil { - return *m.Direction - } - return Default_Index_Property_Direction -} - -type CompositeIndex struct { - AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - Id *int64 `protobuf:"varint,2,req,name=id" json:"id,omitempty"` - Definition *Index `protobuf:"bytes,3,req,name=definition" json:"definition,omitempty"` - State *CompositeIndex_State `protobuf:"varint,4,req,name=state,enum=appengine.CompositeIndex_State" json:"state,omitempty"` - OnlyUseIfRequired *bool `protobuf:"varint,6,opt,name=only_use_if_required,def=0" json:"only_use_if_required,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompositeIndex) Reset() { *m = CompositeIndex{} } -func (m *CompositeIndex) String() string { return proto.CompactTextString(m) } -func (*CompositeIndex) ProtoMessage() {} - -const Default_CompositeIndex_OnlyUseIfRequired bool = false - -func (m *CompositeIndex) GetAppId() string { - if m != nil && m.AppId != nil { - return *m.AppId - } - return "" -} - -func (m *CompositeIndex) GetId() int64 { - if m != nil && m.Id != nil { - return *m.Id - } - return 0 -} - -func (m *CompositeIndex) GetDefinition() *Index { - if m != nil { - return m.Definition - } - return nil -} - -func (m *CompositeIndex) GetState() CompositeIndex_State { - if m != nil && m.State != nil { - return *m.State - } - return CompositeIndex_WRITE_ONLY -} - -func (m *CompositeIndex) GetOnlyUseIfRequired() bool { - if m != nil && m.OnlyUseIfRequired != nil { - return *m.OnlyUseIfRequired - } - return Default_CompositeIndex_OnlyUseIfRequired -} - -type IndexPostfix struct { - IndexValue []*IndexPostfix_IndexValue `protobuf:"bytes,1,rep,name=index_value" json:"index_value,omitempty"` - Key *Reference `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"` - Before *bool `protobuf:"varint,3,opt,name=before,def=1" json:"before,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexPostfix) Reset() { *m = IndexPostfix{} } -func (m *IndexPostfix) String() string { return proto.CompactTextString(m) } -func (*IndexPostfix) ProtoMessage() {} - -const Default_IndexPostfix_Before bool = true - -func (m *IndexPostfix) GetIndexValue() []*IndexPostfix_IndexValue { - if m != nil { - return m.IndexValue - } - return nil -} - -func (m *IndexPostfix) GetKey() *Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *IndexPostfix) GetBefore() bool { - if m != nil && m.Before != nil { - return *m.Before - } - return Default_IndexPostfix_Before -} - -type IndexPostfix_IndexValue struct { - PropertyName *string `protobuf:"bytes,1,req,name=property_name" json:"property_name,omitempty"` - Value *PropertyValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexPostfix_IndexValue) Reset() { *m = IndexPostfix_IndexValue{} } -func (m *IndexPostfix_IndexValue) String() string { return proto.CompactTextString(m) } -func (*IndexPostfix_IndexValue) ProtoMessage() {} - -func (m *IndexPostfix_IndexValue) GetPropertyName() string { - if m != nil && m.PropertyName != nil { - return *m.PropertyName - } - return "" -} - -func (m *IndexPostfix_IndexValue) GetValue() *PropertyValue { - if m != nil { - return m.Value - } - return nil -} - -type IndexPosition struct { - Key *string `protobuf:"bytes,1,opt,name=key" json:"key,omitempty"` - Before *bool `protobuf:"varint,2,opt,name=before,def=1" json:"before,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexPosition) Reset() { *m = IndexPosition{} } -func (m *IndexPosition) String() string { return proto.CompactTextString(m) } -func (*IndexPosition) ProtoMessage() {} - -const Default_IndexPosition_Before bool = true - -func (m *IndexPosition) GetKey() string { - if m != nil && m.Key != nil { - return *m.Key - } - return "" -} - -func (m *IndexPosition) GetBefore() bool { - if m != nil && m.Before != nil { - return *m.Before - } - return Default_IndexPosition_Before -} - -type Snapshot struct { - Ts *int64 `protobuf:"varint,1,req,name=ts" json:"ts,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Snapshot) Reset() { *m = Snapshot{} } -func (m *Snapshot) String() string { return proto.CompactTextString(m) } -func (*Snapshot) ProtoMessage() {} - -func (m *Snapshot) GetTs() int64 { - if m != nil && m.Ts != nil { - return *m.Ts - } - return 0 -} - -type InternalHeader struct { - Qos *string `protobuf:"bytes,1,opt,name=qos" json:"qos,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *InternalHeader) Reset() { *m = InternalHeader{} } -func (m *InternalHeader) String() string { return proto.CompactTextString(m) } -func (*InternalHeader) ProtoMessage() {} - -func (m *InternalHeader) GetQos() string { - if m != nil && m.Qos != nil { - return *m.Qos - } - return "" -} - -type Transaction struct { - Header *InternalHeader `protobuf:"bytes,4,opt,name=header" json:"header,omitempty"` - Handle *uint64 `protobuf:"fixed64,1,req,name=handle" json:"handle,omitempty"` - App *string `protobuf:"bytes,2,req,name=app" json:"app,omitempty"` - MarkChanges *bool `protobuf:"varint,3,opt,name=mark_changes,def=0" json:"mark_changes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Transaction) Reset() { *m = Transaction{} } -func (m *Transaction) String() string { return proto.CompactTextString(m) } -func (*Transaction) ProtoMessage() {} - -const Default_Transaction_MarkChanges bool = false - -func (m *Transaction) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *Transaction) GetHandle() uint64 { - if m != nil && m.Handle != nil { - return *m.Handle - } - return 0 -} - -func (m *Transaction) GetApp() string { - if m != nil && m.App != nil { - return *m.App - } - return "" -} - -func (m *Transaction) GetMarkChanges() bool { - if m != nil && m.MarkChanges != nil { - return *m.MarkChanges - } - return Default_Transaction_MarkChanges -} - -type Query struct { - Header *InternalHeader `protobuf:"bytes,39,opt,name=header" json:"header,omitempty"` - App *string `protobuf:"bytes,1,req,name=app" json:"app,omitempty"` - NameSpace *string `protobuf:"bytes,29,opt,name=name_space" json:"name_space,omitempty"` - Kind *string `protobuf:"bytes,3,opt,name=kind" json:"kind,omitempty"` - Ancestor *Reference `protobuf:"bytes,17,opt,name=ancestor" json:"ancestor,omitempty"` - Filter []*Query_Filter `protobuf:"group,4,rep" json:"filter,omitempty"` - SearchQuery *string `protobuf:"bytes,8,opt,name=search_query" json:"search_query,omitempty"` - Order []*Query_Order `protobuf:"group,9,rep" json:"order,omitempty"` - Hint *Query_Hint `protobuf:"varint,18,opt,name=hint,enum=appengine.Query_Hint" json:"hint,omitempty"` - Count *int32 `protobuf:"varint,23,opt,name=count" json:"count,omitempty"` - Offset *int32 `protobuf:"varint,12,opt,name=offset,def=0" json:"offset,omitempty"` - Limit *int32 `protobuf:"varint,16,opt,name=limit" json:"limit,omitempty"` - CompiledCursor *CompiledCursor `protobuf:"bytes,30,opt,name=compiled_cursor" json:"compiled_cursor,omitempty"` - EndCompiledCursor *CompiledCursor `protobuf:"bytes,31,opt,name=end_compiled_cursor" json:"end_compiled_cursor,omitempty"` - CompositeIndex []*CompositeIndex `protobuf:"bytes,19,rep,name=composite_index" json:"composite_index,omitempty"` - RequirePerfectPlan *bool `protobuf:"varint,20,opt,name=require_perfect_plan,def=0" json:"require_perfect_plan,omitempty"` - KeysOnly *bool `protobuf:"varint,21,opt,name=keys_only,def=0" json:"keys_only,omitempty"` - Transaction *Transaction `protobuf:"bytes,22,opt,name=transaction" json:"transaction,omitempty"` - Compile *bool `protobuf:"varint,25,opt,name=compile,def=0" json:"compile,omitempty"` - FailoverMs *int64 `protobuf:"varint,26,opt,name=failover_ms" json:"failover_ms,omitempty"` - Strong *bool `protobuf:"varint,32,opt,name=strong" json:"strong,omitempty"` - PropertyName []string `protobuf:"bytes,33,rep,name=property_name" json:"property_name,omitempty"` - GroupByPropertyName []string `protobuf:"bytes,34,rep,name=group_by_property_name" json:"group_by_property_name,omitempty"` - Distinct *bool `protobuf:"varint,24,opt,name=distinct" json:"distinct,omitempty"` - MinSafeTimeSeconds *int64 `protobuf:"varint,35,opt,name=min_safe_time_seconds" json:"min_safe_time_seconds,omitempty"` - SafeReplicaName []string `protobuf:"bytes,36,rep,name=safe_replica_name" json:"safe_replica_name,omitempty"` - PersistOffset *bool `protobuf:"varint,37,opt,name=persist_offset,def=0" json:"persist_offset,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Query) Reset() { *m = Query{} } -func (m *Query) String() string { return proto.CompactTextString(m) } -func (*Query) ProtoMessage() {} - -const Default_Query_Offset int32 = 0 -const Default_Query_RequirePerfectPlan bool = false -const Default_Query_KeysOnly bool = false -const Default_Query_Compile bool = false -const Default_Query_PersistOffset bool = false - -func (m *Query) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *Query) GetApp() string { - if m != nil && m.App != nil { - return *m.App - } - return "" -} - -func (m *Query) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *Query) GetKind() string { - if m != nil && m.Kind != nil { - return *m.Kind - } - return "" -} - -func (m *Query) GetAncestor() *Reference { - if m != nil { - return m.Ancestor - } - return nil -} - -func (m *Query) GetFilter() []*Query_Filter { - if m != nil { - return m.Filter - } - return nil -} - -func (m *Query) GetSearchQuery() string { - if m != nil && m.SearchQuery != nil { - return *m.SearchQuery - } - return "" -} - -func (m *Query) GetOrder() []*Query_Order { - if m != nil { - return m.Order - } - return nil -} - -func (m *Query) GetHint() Query_Hint { - if m != nil && m.Hint != nil { - return *m.Hint - } - return Query_ORDER_FIRST -} - -func (m *Query) GetCount() int32 { - if m != nil && m.Count != nil { - return *m.Count - } - return 0 -} - -func (m *Query) GetOffset() int32 { - if m != nil && m.Offset != nil { - return *m.Offset - } - return Default_Query_Offset -} - -func (m *Query) GetLimit() int32 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return 0 -} - -func (m *Query) GetCompiledCursor() *CompiledCursor { - if m != nil { - return m.CompiledCursor - } - return nil -} - -func (m *Query) GetEndCompiledCursor() *CompiledCursor { - if m != nil { - return m.EndCompiledCursor - } - return nil -} - -func (m *Query) GetCompositeIndex() []*CompositeIndex { - if m != nil { - return m.CompositeIndex - } - return nil -} - -func (m *Query) GetRequirePerfectPlan() bool { - if m != nil && m.RequirePerfectPlan != nil { - return *m.RequirePerfectPlan - } - return Default_Query_RequirePerfectPlan -} - -func (m *Query) GetKeysOnly() bool { - if m != nil && m.KeysOnly != nil { - return *m.KeysOnly - } - return Default_Query_KeysOnly -} - -func (m *Query) GetTransaction() *Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *Query) GetCompile() bool { - if m != nil && m.Compile != nil { - return *m.Compile - } - return Default_Query_Compile -} - -func (m *Query) GetFailoverMs() int64 { - if m != nil && m.FailoverMs != nil { - return *m.FailoverMs - } - return 0 -} - -func (m *Query) GetStrong() bool { - if m != nil && m.Strong != nil { - return *m.Strong - } - return false -} - -func (m *Query) GetPropertyName() []string { - if m != nil { - return m.PropertyName - } - return nil -} - -func (m *Query) GetGroupByPropertyName() []string { - if m != nil { - return m.GroupByPropertyName - } - return nil -} - -func (m *Query) GetDistinct() bool { - if m != nil && m.Distinct != nil { - return *m.Distinct - } - return false -} - -func (m *Query) GetMinSafeTimeSeconds() int64 { - if m != nil && m.MinSafeTimeSeconds != nil { - return *m.MinSafeTimeSeconds - } - return 0 -} - -func (m *Query) GetSafeReplicaName() []string { - if m != nil { - return m.SafeReplicaName - } - return nil -} - -func (m *Query) GetPersistOffset() bool { - if m != nil && m.PersistOffset != nil { - return *m.PersistOffset - } - return Default_Query_PersistOffset -} - -type Query_Filter struct { - Op *Query_Filter_Operator `protobuf:"varint,6,req,name=op,enum=appengine.Query_Filter_Operator" json:"op,omitempty"` - Property []*Property `protobuf:"bytes,14,rep,name=property" json:"property,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Query_Filter) Reset() { *m = Query_Filter{} } -func (m *Query_Filter) String() string { return proto.CompactTextString(m) } -func (*Query_Filter) ProtoMessage() {} - -func (m *Query_Filter) GetOp() Query_Filter_Operator { - if m != nil && m.Op != nil { - return *m.Op - } - return Query_Filter_LESS_THAN -} - -func (m *Query_Filter) GetProperty() []*Property { - if m != nil { - return m.Property - } - return nil -} - -type Query_Order struct { - Property *string `protobuf:"bytes,10,req,name=property" json:"property,omitempty"` - Direction *Query_Order_Direction `protobuf:"varint,11,opt,name=direction,enum=appengine.Query_Order_Direction,def=1" json:"direction,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Query_Order) Reset() { *m = Query_Order{} } -func (m *Query_Order) String() string { return proto.CompactTextString(m) } -func (*Query_Order) ProtoMessage() {} - -const Default_Query_Order_Direction Query_Order_Direction = Query_Order_ASCENDING - -func (m *Query_Order) GetProperty() string { - if m != nil && m.Property != nil { - return *m.Property - } - return "" -} - -func (m *Query_Order) GetDirection() Query_Order_Direction { - if m != nil && m.Direction != nil { - return *m.Direction - } - return Default_Query_Order_Direction -} - -type CompiledQuery struct { - Primaryscan *CompiledQuery_PrimaryScan `protobuf:"group,1,req,name=PrimaryScan" json:"primaryscan,omitempty"` - Mergejoinscan []*CompiledQuery_MergeJoinScan `protobuf:"group,7,rep,name=MergeJoinScan" json:"mergejoinscan,omitempty"` - IndexDef *Index `protobuf:"bytes,21,opt,name=index_def" json:"index_def,omitempty"` - Offset *int32 `protobuf:"varint,10,opt,name=offset,def=0" json:"offset,omitempty"` - Limit *int32 `protobuf:"varint,11,opt,name=limit" json:"limit,omitempty"` - KeysOnly *bool `protobuf:"varint,12,req,name=keys_only" json:"keys_only,omitempty"` - PropertyName []string `protobuf:"bytes,24,rep,name=property_name" json:"property_name,omitempty"` - DistinctInfixSize *int32 `protobuf:"varint,25,opt,name=distinct_infix_size" json:"distinct_infix_size,omitempty"` - Entityfilter *CompiledQuery_EntityFilter `protobuf:"group,13,opt,name=EntityFilter" json:"entityfilter,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompiledQuery) Reset() { *m = CompiledQuery{} } -func (m *CompiledQuery) String() string { return proto.CompactTextString(m) } -func (*CompiledQuery) ProtoMessage() {} - -const Default_CompiledQuery_Offset int32 = 0 - -func (m *CompiledQuery) GetPrimaryscan() *CompiledQuery_PrimaryScan { - if m != nil { - return m.Primaryscan - } - return nil -} - -func (m *CompiledQuery) GetMergejoinscan() []*CompiledQuery_MergeJoinScan { - if m != nil { - return m.Mergejoinscan - } - return nil -} - -func (m *CompiledQuery) GetIndexDef() *Index { - if m != nil { - return m.IndexDef - } - return nil -} - -func (m *CompiledQuery) GetOffset() int32 { - if m != nil && m.Offset != nil { - return *m.Offset - } - return Default_CompiledQuery_Offset -} - -func (m *CompiledQuery) GetLimit() int32 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return 0 -} - -func (m *CompiledQuery) GetKeysOnly() bool { - if m != nil && m.KeysOnly != nil { - return *m.KeysOnly - } - return false -} - -func (m *CompiledQuery) GetPropertyName() []string { - if m != nil { - return m.PropertyName - } - return nil -} - -func (m *CompiledQuery) GetDistinctInfixSize() int32 { - if m != nil && m.DistinctInfixSize != nil { - return *m.DistinctInfixSize - } - return 0 -} - -func (m *CompiledQuery) GetEntityfilter() *CompiledQuery_EntityFilter { - if m != nil { - return m.Entityfilter - } - return nil -} - -type CompiledQuery_PrimaryScan struct { - IndexName *string `protobuf:"bytes,2,opt,name=index_name" json:"index_name,omitempty"` - StartKey *string `protobuf:"bytes,3,opt,name=start_key" json:"start_key,omitempty"` - StartInclusive *bool `protobuf:"varint,4,opt,name=start_inclusive" json:"start_inclusive,omitempty"` - EndKey *string `protobuf:"bytes,5,opt,name=end_key" json:"end_key,omitempty"` - EndInclusive *bool `protobuf:"varint,6,opt,name=end_inclusive" json:"end_inclusive,omitempty"` - StartPostfixValue []string `protobuf:"bytes,22,rep,name=start_postfix_value" json:"start_postfix_value,omitempty"` - EndPostfixValue []string `protobuf:"bytes,23,rep,name=end_postfix_value" json:"end_postfix_value,omitempty"` - EndUnappliedLogTimestampUs *int64 `protobuf:"varint,19,opt,name=end_unapplied_log_timestamp_us" json:"end_unapplied_log_timestamp_us,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompiledQuery_PrimaryScan) Reset() { *m = CompiledQuery_PrimaryScan{} } -func (m *CompiledQuery_PrimaryScan) String() string { return proto.CompactTextString(m) } -func (*CompiledQuery_PrimaryScan) ProtoMessage() {} - -func (m *CompiledQuery_PrimaryScan) GetIndexName() string { - if m != nil && m.IndexName != nil { - return *m.IndexName - } - return "" -} - -func (m *CompiledQuery_PrimaryScan) GetStartKey() string { - if m != nil && m.StartKey != nil { - return *m.StartKey - } - return "" -} - -func (m *CompiledQuery_PrimaryScan) GetStartInclusive() bool { - if m != nil && m.StartInclusive != nil { - return *m.StartInclusive - } - return false -} - -func (m *CompiledQuery_PrimaryScan) GetEndKey() string { - if m != nil && m.EndKey != nil { - return *m.EndKey - } - return "" -} - -func (m *CompiledQuery_PrimaryScan) GetEndInclusive() bool { - if m != nil && m.EndInclusive != nil { - return *m.EndInclusive - } - return false -} - -func (m *CompiledQuery_PrimaryScan) GetStartPostfixValue() []string { - if m != nil { - return m.StartPostfixValue - } - return nil -} - -func (m *CompiledQuery_PrimaryScan) GetEndPostfixValue() []string { - if m != nil { - return m.EndPostfixValue - } - return nil -} - -func (m *CompiledQuery_PrimaryScan) GetEndUnappliedLogTimestampUs() int64 { - if m != nil && m.EndUnappliedLogTimestampUs != nil { - return *m.EndUnappliedLogTimestampUs - } - return 0 -} - -type CompiledQuery_MergeJoinScan struct { - IndexName *string `protobuf:"bytes,8,req,name=index_name" json:"index_name,omitempty"` - PrefixValue []string `protobuf:"bytes,9,rep,name=prefix_value" json:"prefix_value,omitempty"` - ValuePrefix *bool `protobuf:"varint,20,opt,name=value_prefix,def=0" json:"value_prefix,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompiledQuery_MergeJoinScan) Reset() { *m = CompiledQuery_MergeJoinScan{} } -func (m *CompiledQuery_MergeJoinScan) String() string { return proto.CompactTextString(m) } -func (*CompiledQuery_MergeJoinScan) ProtoMessage() {} - -const Default_CompiledQuery_MergeJoinScan_ValuePrefix bool = false - -func (m *CompiledQuery_MergeJoinScan) GetIndexName() string { - if m != nil && m.IndexName != nil { - return *m.IndexName - } - return "" -} - -func (m *CompiledQuery_MergeJoinScan) GetPrefixValue() []string { - if m != nil { - return m.PrefixValue - } - return nil -} - -func (m *CompiledQuery_MergeJoinScan) GetValuePrefix() bool { - if m != nil && m.ValuePrefix != nil { - return *m.ValuePrefix - } - return Default_CompiledQuery_MergeJoinScan_ValuePrefix -} - -type CompiledQuery_EntityFilter struct { - Distinct *bool `protobuf:"varint,14,opt,name=distinct,def=0" json:"distinct,omitempty"` - Kind *string `protobuf:"bytes,17,opt,name=kind" json:"kind,omitempty"` - Ancestor *Reference `protobuf:"bytes,18,opt,name=ancestor" json:"ancestor,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompiledQuery_EntityFilter) Reset() { *m = CompiledQuery_EntityFilter{} } -func (m *CompiledQuery_EntityFilter) String() string { return proto.CompactTextString(m) } -func (*CompiledQuery_EntityFilter) ProtoMessage() {} - -const Default_CompiledQuery_EntityFilter_Distinct bool = false - -func (m *CompiledQuery_EntityFilter) GetDistinct() bool { - if m != nil && m.Distinct != nil { - return *m.Distinct - } - return Default_CompiledQuery_EntityFilter_Distinct -} - -func (m *CompiledQuery_EntityFilter) GetKind() string { - if m != nil && m.Kind != nil { - return *m.Kind - } - return "" -} - -func (m *CompiledQuery_EntityFilter) GetAncestor() *Reference { - if m != nil { - return m.Ancestor - } - return nil -} - -type CompiledCursor struct { - Position *CompiledCursor_Position `protobuf:"group,2,opt" json:"position,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompiledCursor) Reset() { *m = CompiledCursor{} } -func (m *CompiledCursor) String() string { return proto.CompactTextString(m) } -func (*CompiledCursor) ProtoMessage() {} - -func (m *CompiledCursor) GetPosition() *CompiledCursor_Position { - if m != nil { - return m.Position - } - return nil -} - -type CompiledCursor_Position struct { - StartKey *string `protobuf:"bytes,27,opt,name=start_key" json:"start_key,omitempty"` - Indexvalue []*CompiledCursor_Position_IndexValue `protobuf:"group,29,rep,name=IndexValue" json:"indexvalue,omitempty"` - Key *Reference `protobuf:"bytes,32,opt,name=key" json:"key,omitempty"` - StartInclusive *bool `protobuf:"varint,28,opt,name=start_inclusive,def=1" json:"start_inclusive,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompiledCursor_Position) Reset() { *m = CompiledCursor_Position{} } -func (m *CompiledCursor_Position) String() string { return proto.CompactTextString(m) } -func (*CompiledCursor_Position) ProtoMessage() {} - -const Default_CompiledCursor_Position_StartInclusive bool = true - -func (m *CompiledCursor_Position) GetStartKey() string { - if m != nil && m.StartKey != nil { - return *m.StartKey - } - return "" -} - -func (m *CompiledCursor_Position) GetIndexvalue() []*CompiledCursor_Position_IndexValue { - if m != nil { - return m.Indexvalue - } - return nil -} - -func (m *CompiledCursor_Position) GetKey() *Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *CompiledCursor_Position) GetStartInclusive() bool { - if m != nil && m.StartInclusive != nil { - return *m.StartInclusive - } - return Default_CompiledCursor_Position_StartInclusive -} - -type CompiledCursor_Position_IndexValue struct { - Property *string `protobuf:"bytes,30,opt,name=property" json:"property,omitempty"` - Value *PropertyValue `protobuf:"bytes,31,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompiledCursor_Position_IndexValue) Reset() { *m = CompiledCursor_Position_IndexValue{} } -func (m *CompiledCursor_Position_IndexValue) String() string { return proto.CompactTextString(m) } -func (*CompiledCursor_Position_IndexValue) ProtoMessage() {} - -func (m *CompiledCursor_Position_IndexValue) GetProperty() string { - if m != nil && m.Property != nil { - return *m.Property - } - return "" -} - -func (m *CompiledCursor_Position_IndexValue) GetValue() *PropertyValue { - if m != nil { - return m.Value - } - return nil -} - -type Cursor struct { - Cursor *uint64 `protobuf:"fixed64,1,req,name=cursor" json:"cursor,omitempty"` - App *string `protobuf:"bytes,2,opt,name=app" json:"app,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Cursor) Reset() { *m = Cursor{} } -func (m *Cursor) String() string { return proto.CompactTextString(m) } -func (*Cursor) ProtoMessage() {} - -func (m *Cursor) GetCursor() uint64 { - if m != nil && m.Cursor != nil { - return *m.Cursor - } - return 0 -} - -func (m *Cursor) GetApp() string { - if m != nil && m.App != nil { - return *m.App - } - return "" -} - -type Error struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *Error) Reset() { *m = Error{} } -func (m *Error) String() string { return proto.CompactTextString(m) } -func (*Error) ProtoMessage() {} - -type Cost struct { - IndexWrites *int32 `protobuf:"varint,1,opt,name=index_writes" json:"index_writes,omitempty"` - IndexWriteBytes *int32 `protobuf:"varint,2,opt,name=index_write_bytes" json:"index_write_bytes,omitempty"` - EntityWrites *int32 `protobuf:"varint,3,opt,name=entity_writes" json:"entity_writes,omitempty"` - EntityWriteBytes *int32 `protobuf:"varint,4,opt,name=entity_write_bytes" json:"entity_write_bytes,omitempty"` - Commitcost *Cost_CommitCost `protobuf:"group,5,opt,name=CommitCost" json:"commitcost,omitempty"` - ApproximateStorageDelta *int32 `protobuf:"varint,8,opt,name=approximate_storage_delta" json:"approximate_storage_delta,omitempty"` - IdSequenceUpdates *int32 `protobuf:"varint,9,opt,name=id_sequence_updates" json:"id_sequence_updates,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Cost) Reset() { *m = Cost{} } -func (m *Cost) String() string { return proto.CompactTextString(m) } -func (*Cost) ProtoMessage() {} - -func (m *Cost) GetIndexWrites() int32 { - if m != nil && m.IndexWrites != nil { - return *m.IndexWrites - } - return 0 -} - -func (m *Cost) GetIndexWriteBytes() int32 { - if m != nil && m.IndexWriteBytes != nil { - return *m.IndexWriteBytes - } - return 0 -} - -func (m *Cost) GetEntityWrites() int32 { - if m != nil && m.EntityWrites != nil { - return *m.EntityWrites - } - return 0 -} - -func (m *Cost) GetEntityWriteBytes() int32 { - if m != nil && m.EntityWriteBytes != nil { - return *m.EntityWriteBytes - } - return 0 -} - -func (m *Cost) GetCommitcost() *Cost_CommitCost { - if m != nil { - return m.Commitcost - } - return nil -} - -func (m *Cost) GetApproximateStorageDelta() int32 { - if m != nil && m.ApproximateStorageDelta != nil { - return *m.ApproximateStorageDelta - } - return 0 -} - -func (m *Cost) GetIdSequenceUpdates() int32 { - if m != nil && m.IdSequenceUpdates != nil { - return *m.IdSequenceUpdates - } - return 0 -} - -type Cost_CommitCost struct { - RequestedEntityPuts *int32 `protobuf:"varint,6,opt,name=requested_entity_puts" json:"requested_entity_puts,omitempty"` - RequestedEntityDeletes *int32 `protobuf:"varint,7,opt,name=requested_entity_deletes" json:"requested_entity_deletes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Cost_CommitCost) Reset() { *m = Cost_CommitCost{} } -func (m *Cost_CommitCost) String() string { return proto.CompactTextString(m) } -func (*Cost_CommitCost) ProtoMessage() {} - -func (m *Cost_CommitCost) GetRequestedEntityPuts() int32 { - if m != nil && m.RequestedEntityPuts != nil { - return *m.RequestedEntityPuts - } - return 0 -} - -func (m *Cost_CommitCost) GetRequestedEntityDeletes() int32 { - if m != nil && m.RequestedEntityDeletes != nil { - return *m.RequestedEntityDeletes - } - return 0 -} - -type GetRequest struct { - Header *InternalHeader `protobuf:"bytes,6,opt,name=header" json:"header,omitempty"` - Key []*Reference `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"` - Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` - FailoverMs *int64 `protobuf:"varint,3,opt,name=failover_ms" json:"failover_ms,omitempty"` - Strong *bool `protobuf:"varint,4,opt,name=strong" json:"strong,omitempty"` - AllowDeferred *bool `protobuf:"varint,5,opt,name=allow_deferred,def=0" json:"allow_deferred,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetRequest) Reset() { *m = GetRequest{} } -func (m *GetRequest) String() string { return proto.CompactTextString(m) } -func (*GetRequest) ProtoMessage() {} - -const Default_GetRequest_AllowDeferred bool = false - -func (m *GetRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *GetRequest) GetKey() []*Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *GetRequest) GetTransaction() *Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *GetRequest) GetFailoverMs() int64 { - if m != nil && m.FailoverMs != nil { - return *m.FailoverMs - } - return 0 -} - -func (m *GetRequest) GetStrong() bool { - if m != nil && m.Strong != nil { - return *m.Strong - } - return false -} - -func (m *GetRequest) GetAllowDeferred() bool { - if m != nil && m.AllowDeferred != nil { - return *m.AllowDeferred - } - return Default_GetRequest_AllowDeferred -} - -type GetResponse struct { - Entity []*GetResponse_Entity `protobuf:"group,1,rep" json:"entity,omitempty"` - Deferred []*Reference `protobuf:"bytes,5,rep,name=deferred" json:"deferred,omitempty"` - InOrder *bool `protobuf:"varint,6,opt,name=in_order,def=1" json:"in_order,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetResponse) Reset() { *m = GetResponse{} } -func (m *GetResponse) String() string { return proto.CompactTextString(m) } -func (*GetResponse) ProtoMessage() {} - -const Default_GetResponse_InOrder bool = true - -func (m *GetResponse) GetEntity() []*GetResponse_Entity { - if m != nil { - return m.Entity - } - return nil -} - -func (m *GetResponse) GetDeferred() []*Reference { - if m != nil { - return m.Deferred - } - return nil -} - -func (m *GetResponse) GetInOrder() bool { - if m != nil && m.InOrder != nil { - return *m.InOrder - } - return Default_GetResponse_InOrder -} - -type GetResponse_Entity struct { - Entity *EntityProto `protobuf:"bytes,2,opt,name=entity" json:"entity,omitempty"` - Key *Reference `protobuf:"bytes,4,opt,name=key" json:"key,omitempty"` - Version *int64 `protobuf:"varint,3,opt,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetResponse_Entity) Reset() { *m = GetResponse_Entity{} } -func (m *GetResponse_Entity) String() string { return proto.CompactTextString(m) } -func (*GetResponse_Entity) ProtoMessage() {} - -func (m *GetResponse_Entity) GetEntity() *EntityProto { - if m != nil { - return m.Entity - } - return nil -} - -func (m *GetResponse_Entity) GetKey() *Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *GetResponse_Entity) GetVersion() int64 { - if m != nil && m.Version != nil { - return *m.Version - } - return 0 -} - -type PutRequest struct { - Header *InternalHeader `protobuf:"bytes,11,opt,name=header" json:"header,omitempty"` - Entity []*EntityProto `protobuf:"bytes,1,rep,name=entity" json:"entity,omitempty"` - Transaction *Transaction `protobuf:"bytes,2,opt,name=transaction" json:"transaction,omitempty"` - CompositeIndex []*CompositeIndex `protobuf:"bytes,3,rep,name=composite_index" json:"composite_index,omitempty"` - Trusted *bool `protobuf:"varint,4,opt,name=trusted,def=0" json:"trusted,omitempty"` - Force *bool `protobuf:"varint,7,opt,name=force,def=0" json:"force,omitempty"` - MarkChanges *bool `protobuf:"varint,8,opt,name=mark_changes,def=0" json:"mark_changes,omitempty"` - Snapshot []*Snapshot `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"` - AutoIdPolicy *PutRequest_AutoIdPolicy `protobuf:"varint,10,opt,name=auto_id_policy,enum=appengine.PutRequest_AutoIdPolicy,def=0" json:"auto_id_policy,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PutRequest) Reset() { *m = PutRequest{} } -func (m *PutRequest) String() string { return proto.CompactTextString(m) } -func (*PutRequest) ProtoMessage() {} - -const Default_PutRequest_Trusted bool = false -const Default_PutRequest_Force bool = false -const Default_PutRequest_MarkChanges bool = false -const Default_PutRequest_AutoIdPolicy PutRequest_AutoIdPolicy = PutRequest_CURRENT - -func (m *PutRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *PutRequest) GetEntity() []*EntityProto { - if m != nil { - return m.Entity - } - return nil -} - -func (m *PutRequest) GetTransaction() *Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *PutRequest) GetCompositeIndex() []*CompositeIndex { - if m != nil { - return m.CompositeIndex - } - return nil -} - -func (m *PutRequest) GetTrusted() bool { - if m != nil && m.Trusted != nil { - return *m.Trusted - } - return Default_PutRequest_Trusted -} - -func (m *PutRequest) GetForce() bool { - if m != nil && m.Force != nil { - return *m.Force - } - return Default_PutRequest_Force -} - -func (m *PutRequest) GetMarkChanges() bool { - if m != nil && m.MarkChanges != nil { - return *m.MarkChanges - } - return Default_PutRequest_MarkChanges -} - -func (m *PutRequest) GetSnapshot() []*Snapshot { - if m != nil { - return m.Snapshot - } - return nil -} - -func (m *PutRequest) GetAutoIdPolicy() PutRequest_AutoIdPolicy { - if m != nil && m.AutoIdPolicy != nil { - return *m.AutoIdPolicy - } - return Default_PutRequest_AutoIdPolicy -} - -type PutResponse struct { - Key []*Reference `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"` - Cost *Cost `protobuf:"bytes,2,opt,name=cost" json:"cost,omitempty"` - Version []int64 `protobuf:"varint,3,rep,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PutResponse) Reset() { *m = PutResponse{} } -func (m *PutResponse) String() string { return proto.CompactTextString(m) } -func (*PutResponse) ProtoMessage() {} - -func (m *PutResponse) GetKey() []*Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *PutResponse) GetCost() *Cost { - if m != nil { - return m.Cost - } - return nil -} - -func (m *PutResponse) GetVersion() []int64 { - if m != nil { - return m.Version - } - return nil -} - -type TouchRequest struct { - Header *InternalHeader `protobuf:"bytes,10,opt,name=header" json:"header,omitempty"` - Key []*Reference `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"` - CompositeIndex []*CompositeIndex `protobuf:"bytes,2,rep,name=composite_index" json:"composite_index,omitempty"` - Force *bool `protobuf:"varint,3,opt,name=force,def=0" json:"force,omitempty"` - Snapshot []*Snapshot `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TouchRequest) Reset() { *m = TouchRequest{} } -func (m *TouchRequest) String() string { return proto.CompactTextString(m) } -func (*TouchRequest) ProtoMessage() {} - -const Default_TouchRequest_Force bool = false - -func (m *TouchRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *TouchRequest) GetKey() []*Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *TouchRequest) GetCompositeIndex() []*CompositeIndex { - if m != nil { - return m.CompositeIndex - } - return nil -} - -func (m *TouchRequest) GetForce() bool { - if m != nil && m.Force != nil { - return *m.Force - } - return Default_TouchRequest_Force -} - -func (m *TouchRequest) GetSnapshot() []*Snapshot { - if m != nil { - return m.Snapshot - } - return nil -} - -type TouchResponse struct { - Cost *Cost `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TouchResponse) Reset() { *m = TouchResponse{} } -func (m *TouchResponse) String() string { return proto.CompactTextString(m) } -func (*TouchResponse) ProtoMessage() {} - -func (m *TouchResponse) GetCost() *Cost { - if m != nil { - return m.Cost - } - return nil -} - -type DeleteRequest struct { - Header *InternalHeader `protobuf:"bytes,10,opt,name=header" json:"header,omitempty"` - Key []*Reference `protobuf:"bytes,6,rep,name=key" json:"key,omitempty"` - Transaction *Transaction `protobuf:"bytes,5,opt,name=transaction" json:"transaction,omitempty"` - Trusted *bool `protobuf:"varint,4,opt,name=trusted,def=0" json:"trusted,omitempty"` - Force *bool `protobuf:"varint,7,opt,name=force,def=0" json:"force,omitempty"` - MarkChanges *bool `protobuf:"varint,8,opt,name=mark_changes,def=0" json:"mark_changes,omitempty"` - Snapshot []*Snapshot `protobuf:"bytes,9,rep,name=snapshot" json:"snapshot,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteRequest) Reset() { *m = DeleteRequest{} } -func (m *DeleteRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteRequest) ProtoMessage() {} - -const Default_DeleteRequest_Trusted bool = false -const Default_DeleteRequest_Force bool = false -const Default_DeleteRequest_MarkChanges bool = false - -func (m *DeleteRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *DeleteRequest) GetKey() []*Reference { - if m != nil { - return m.Key - } - return nil -} - -func (m *DeleteRequest) GetTransaction() *Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *DeleteRequest) GetTrusted() bool { - if m != nil && m.Trusted != nil { - return *m.Trusted - } - return Default_DeleteRequest_Trusted -} - -func (m *DeleteRequest) GetForce() bool { - if m != nil && m.Force != nil { - return *m.Force - } - return Default_DeleteRequest_Force -} - -func (m *DeleteRequest) GetMarkChanges() bool { - if m != nil && m.MarkChanges != nil { - return *m.MarkChanges - } - return Default_DeleteRequest_MarkChanges -} - -func (m *DeleteRequest) GetSnapshot() []*Snapshot { - if m != nil { - return m.Snapshot - } - return nil -} - -type DeleteResponse struct { - Cost *Cost `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"` - Version []int64 `protobuf:"varint,3,rep,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteResponse) Reset() { *m = DeleteResponse{} } -func (m *DeleteResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteResponse) ProtoMessage() {} - -func (m *DeleteResponse) GetCost() *Cost { - if m != nil { - return m.Cost - } - return nil -} - -func (m *DeleteResponse) GetVersion() []int64 { - if m != nil { - return m.Version - } - return nil -} - -type NextRequest struct { - Header *InternalHeader `protobuf:"bytes,5,opt,name=header" json:"header,omitempty"` - Cursor *Cursor `protobuf:"bytes,1,req,name=cursor" json:"cursor,omitempty"` - Count *int32 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` - Offset *int32 `protobuf:"varint,4,opt,name=offset,def=0" json:"offset,omitempty"` - Compile *bool `protobuf:"varint,3,opt,name=compile,def=0" json:"compile,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *NextRequest) Reset() { *m = NextRequest{} } -func (m *NextRequest) String() string { return proto.CompactTextString(m) } -func (*NextRequest) ProtoMessage() {} - -const Default_NextRequest_Offset int32 = 0 -const Default_NextRequest_Compile bool = false - -func (m *NextRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *NextRequest) GetCursor() *Cursor { - if m != nil { - return m.Cursor - } - return nil -} - -func (m *NextRequest) GetCount() int32 { - if m != nil && m.Count != nil { - return *m.Count - } - return 0 -} - -func (m *NextRequest) GetOffset() int32 { - if m != nil && m.Offset != nil { - return *m.Offset - } - return Default_NextRequest_Offset -} - -func (m *NextRequest) GetCompile() bool { - if m != nil && m.Compile != nil { - return *m.Compile - } - return Default_NextRequest_Compile -} - -type QueryResult struct { - Cursor *Cursor `protobuf:"bytes,1,opt,name=cursor" json:"cursor,omitempty"` - Result []*EntityProto `protobuf:"bytes,2,rep,name=result" json:"result,omitempty"` - SkippedResults *int32 `protobuf:"varint,7,opt,name=skipped_results" json:"skipped_results,omitempty"` - MoreResults *bool `protobuf:"varint,3,req,name=more_results" json:"more_results,omitempty"` - KeysOnly *bool `protobuf:"varint,4,opt,name=keys_only" json:"keys_only,omitempty"` - IndexOnly *bool `protobuf:"varint,9,opt,name=index_only" json:"index_only,omitempty"` - SmallOps *bool `protobuf:"varint,10,opt,name=small_ops" json:"small_ops,omitempty"` - CompiledQuery *CompiledQuery `protobuf:"bytes,5,opt,name=compiled_query" json:"compiled_query,omitempty"` - CompiledCursor *CompiledCursor `protobuf:"bytes,6,opt,name=compiled_cursor" json:"compiled_cursor,omitempty"` - Index []*CompositeIndex `protobuf:"bytes,8,rep,name=index" json:"index,omitempty"` - Version []int64 `protobuf:"varint,11,rep,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *QueryResult) Reset() { *m = QueryResult{} } -func (m *QueryResult) String() string { return proto.CompactTextString(m) } -func (*QueryResult) ProtoMessage() {} - -func (m *QueryResult) GetCursor() *Cursor { - if m != nil { - return m.Cursor - } - return nil -} - -func (m *QueryResult) GetResult() []*EntityProto { - if m != nil { - return m.Result - } - return nil -} - -func (m *QueryResult) GetSkippedResults() int32 { - if m != nil && m.SkippedResults != nil { - return *m.SkippedResults - } - return 0 -} - -func (m *QueryResult) GetMoreResults() bool { - if m != nil && m.MoreResults != nil { - return *m.MoreResults - } - return false -} - -func (m *QueryResult) GetKeysOnly() bool { - if m != nil && m.KeysOnly != nil { - return *m.KeysOnly - } - return false -} - -func (m *QueryResult) GetIndexOnly() bool { - if m != nil && m.IndexOnly != nil { - return *m.IndexOnly - } - return false -} - -func (m *QueryResult) GetSmallOps() bool { - if m != nil && m.SmallOps != nil { - return *m.SmallOps - } - return false -} - -func (m *QueryResult) GetCompiledQuery() *CompiledQuery { - if m != nil { - return m.CompiledQuery - } - return nil -} - -func (m *QueryResult) GetCompiledCursor() *CompiledCursor { - if m != nil { - return m.CompiledCursor - } - return nil -} - -func (m *QueryResult) GetIndex() []*CompositeIndex { - if m != nil { - return m.Index - } - return nil -} - -func (m *QueryResult) GetVersion() []int64 { - if m != nil { - return m.Version - } - return nil -} - -type AllocateIdsRequest struct { - Header *InternalHeader `protobuf:"bytes,4,opt,name=header" json:"header,omitempty"` - ModelKey *Reference `protobuf:"bytes,1,opt,name=model_key" json:"model_key,omitempty"` - Size *int64 `protobuf:"varint,2,opt,name=size" json:"size,omitempty"` - Max *int64 `protobuf:"varint,3,opt,name=max" json:"max,omitempty"` - Reserve []*Reference `protobuf:"bytes,5,rep,name=reserve" json:"reserve,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *AllocateIdsRequest) Reset() { *m = AllocateIdsRequest{} } -func (m *AllocateIdsRequest) String() string { return proto.CompactTextString(m) } -func (*AllocateIdsRequest) ProtoMessage() {} - -func (m *AllocateIdsRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *AllocateIdsRequest) GetModelKey() *Reference { - if m != nil { - return m.ModelKey - } - return nil -} - -func (m *AllocateIdsRequest) GetSize() int64 { - if m != nil && m.Size != nil { - return *m.Size - } - return 0 -} - -func (m *AllocateIdsRequest) GetMax() int64 { - if m != nil && m.Max != nil { - return *m.Max - } - return 0 -} - -func (m *AllocateIdsRequest) GetReserve() []*Reference { - if m != nil { - return m.Reserve - } - return nil -} - -type AllocateIdsResponse struct { - Start *int64 `protobuf:"varint,1,req,name=start" json:"start,omitempty"` - End *int64 `protobuf:"varint,2,req,name=end" json:"end,omitempty"` - Cost *Cost `protobuf:"bytes,3,opt,name=cost" json:"cost,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *AllocateIdsResponse) Reset() { *m = AllocateIdsResponse{} } -func (m *AllocateIdsResponse) String() string { return proto.CompactTextString(m) } -func (*AllocateIdsResponse) ProtoMessage() {} - -func (m *AllocateIdsResponse) GetStart() int64 { - if m != nil && m.Start != nil { - return *m.Start - } - return 0 -} - -func (m *AllocateIdsResponse) GetEnd() int64 { - if m != nil && m.End != nil { - return *m.End - } - return 0 -} - -func (m *AllocateIdsResponse) GetCost() *Cost { - if m != nil { - return m.Cost - } - return nil -} - -type CompositeIndices struct { - Index []*CompositeIndex `protobuf:"bytes,1,rep,name=index" json:"index,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompositeIndices) Reset() { *m = CompositeIndices{} } -func (m *CompositeIndices) String() string { return proto.CompactTextString(m) } -func (*CompositeIndices) ProtoMessage() {} - -func (m *CompositeIndices) GetIndex() []*CompositeIndex { - if m != nil { - return m.Index - } - return nil -} - -type AddActionsRequest struct { - Header *InternalHeader `protobuf:"bytes,3,opt,name=header" json:"header,omitempty"` - Transaction *Transaction `protobuf:"bytes,1,req,name=transaction" json:"transaction,omitempty"` - Action []*Action `protobuf:"bytes,2,rep,name=action" json:"action,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *AddActionsRequest) Reset() { *m = AddActionsRequest{} } -func (m *AddActionsRequest) String() string { return proto.CompactTextString(m) } -func (*AddActionsRequest) ProtoMessage() {} - -func (m *AddActionsRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *AddActionsRequest) GetTransaction() *Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *AddActionsRequest) GetAction() []*Action { - if m != nil { - return m.Action - } - return nil -} - -type AddActionsResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *AddActionsResponse) Reset() { *m = AddActionsResponse{} } -func (m *AddActionsResponse) String() string { return proto.CompactTextString(m) } -func (*AddActionsResponse) ProtoMessage() {} - -type BeginTransactionRequest struct { - Header *InternalHeader `protobuf:"bytes,3,opt,name=header" json:"header,omitempty"` - App *string `protobuf:"bytes,1,req,name=app" json:"app,omitempty"` - AllowMultipleEg *bool `protobuf:"varint,2,opt,name=allow_multiple_eg,def=0" json:"allow_multiple_eg,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *BeginTransactionRequest) Reset() { *m = BeginTransactionRequest{} } -func (m *BeginTransactionRequest) String() string { return proto.CompactTextString(m) } -func (*BeginTransactionRequest) ProtoMessage() {} - -const Default_BeginTransactionRequest_AllowMultipleEg bool = false - -func (m *BeginTransactionRequest) GetHeader() *InternalHeader { - if m != nil { - return m.Header - } - return nil -} - -func (m *BeginTransactionRequest) GetApp() string { - if m != nil && m.App != nil { - return *m.App - } - return "" -} - -func (m *BeginTransactionRequest) GetAllowMultipleEg() bool { - if m != nil && m.AllowMultipleEg != nil { - return *m.AllowMultipleEg - } - return Default_BeginTransactionRequest_AllowMultipleEg -} - -type CommitResponse struct { - Cost *Cost `protobuf:"bytes,1,opt,name=cost" json:"cost,omitempty"` - Version []*CommitResponse_Version `protobuf:"group,3,rep" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CommitResponse) Reset() { *m = CommitResponse{} } -func (m *CommitResponse) String() string { return proto.CompactTextString(m) } -func (*CommitResponse) ProtoMessage() {} - -func (m *CommitResponse) GetCost() *Cost { - if m != nil { - return m.Cost - } - return nil -} - -func (m *CommitResponse) GetVersion() []*CommitResponse_Version { - if m != nil { - return m.Version - } - return nil -} - -type CommitResponse_Version struct { - RootEntityKey *Reference `protobuf:"bytes,4,req,name=root_entity_key" json:"root_entity_key,omitempty"` - Version *int64 `protobuf:"varint,5,req,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CommitResponse_Version) Reset() { *m = CommitResponse_Version{} } -func (m *CommitResponse_Version) String() string { return proto.CompactTextString(m) } -func (*CommitResponse_Version) ProtoMessage() {} - -func (m *CommitResponse_Version) GetRootEntityKey() *Reference { - if m != nil { - return m.RootEntityKey - } - return nil -} - -func (m *CommitResponse_Version) GetVersion() int64 { - if m != nil && m.Version != nil { - return *m.Version - } - return 0 -} - -func init() { - proto.RegisterEnum("appengine.Property_Meaning", Property_Meaning_name, Property_Meaning_value) - proto.RegisterEnum("appengine.Property_FtsTokenizationOption", Property_FtsTokenizationOption_name, Property_FtsTokenizationOption_value) - proto.RegisterEnum("appengine.EntityProto_Kind", EntityProto_Kind_name, EntityProto_Kind_value) - proto.RegisterEnum("appengine.Index_Property_Direction", Index_Property_Direction_name, Index_Property_Direction_value) - proto.RegisterEnum("appengine.CompositeIndex_State", CompositeIndex_State_name, CompositeIndex_State_value) - proto.RegisterEnum("appengine.Snapshot_Status", Snapshot_Status_name, Snapshot_Status_value) - proto.RegisterEnum("appengine.Query_Hint", Query_Hint_name, Query_Hint_value) - proto.RegisterEnum("appengine.Query_Filter_Operator", Query_Filter_Operator_name, Query_Filter_Operator_value) - proto.RegisterEnum("appengine.Query_Order_Direction", Query_Order_Direction_name, Query_Order_Direction_value) - proto.RegisterEnum("appengine.Error_ErrorCode", Error_ErrorCode_name, Error_ErrorCode_value) - proto.RegisterEnum("appengine.PutRequest_AutoIdPolicy", PutRequest_AutoIdPolicy_name, PutRequest_AutoIdPolicy_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.proto deleted file mode 100644 index e76f126ff7c..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/datastore/datastore_v3.proto +++ /dev/null @@ -1,541 +0,0 @@ -syntax = "proto2"; -option go_package = "datastore"; - -package appengine; - -message Action{} - -message PropertyValue { - optional int64 int64Value = 1; - optional bool booleanValue = 2; - optional string stringValue = 3; - optional double doubleValue = 4; - - optional group PointValue = 5 { - required double x = 6; - required double y = 7; - } - - optional group UserValue = 8 { - required string email = 9; - required string auth_domain = 10; - optional string nickname = 11; - optional string federated_identity = 21; - optional string federated_provider = 22; - } - - optional group ReferenceValue = 12 { - required string app = 13; - optional string name_space = 20; - repeated group PathElement = 14 { - required string type = 15; - optional int64 id = 16; - optional string name = 17; - } - } -} - -message Property { - enum Meaning { - NO_MEANING = 0; - BLOB = 14; - TEXT = 15; - BYTESTRING = 16; - - ATOM_CATEGORY = 1; - ATOM_LINK = 2; - ATOM_TITLE = 3; - ATOM_CONTENT = 4; - ATOM_SUMMARY = 5; - ATOM_AUTHOR = 6; - - GD_WHEN = 7; - GD_EMAIL = 8; - GEORSS_POINT = 9; - GD_IM = 10; - - GD_PHONENUMBER = 11; - GD_POSTALADDRESS = 12; - - GD_RATING = 13; - - BLOBKEY = 17; - ENTITY_PROTO = 19; - - INDEX_VALUE = 18; - }; - - optional Meaning meaning = 1 [default = NO_MEANING]; - optional string meaning_uri = 2; - - required string name = 3; - - required PropertyValue value = 5; - - required bool multiple = 4; - - optional bool searchable = 6 [default=false]; - - enum FtsTokenizationOption { - HTML = 1; - ATOM = 2; - } - - optional FtsTokenizationOption fts_tokenization_option = 8; - - optional string locale = 9 [default = "en"]; -} - -message Path { - repeated group Element = 1 { - required string type = 2; - optional int64 id = 3; - optional string name = 4; - } -} - -message Reference { - required string app = 13; - optional string name_space = 20; - required Path path = 14; -} - -message User { - required string email = 1; - required string auth_domain = 2; - optional string nickname = 3; - optional string federated_identity = 6; - optional string federated_provider = 7; -} - -message EntityProto { - required Reference key = 13; - required Path entity_group = 16; - optional User owner = 17; - - enum Kind { - GD_CONTACT = 1; - GD_EVENT = 2; - GD_MESSAGE = 3; - } - optional Kind kind = 4; - optional string kind_uri = 5; - - repeated Property property = 14; - repeated Property raw_property = 15; - - optional int32 rank = 18; -} - -message CompositeProperty { - required int64 index_id = 1; - repeated string value = 2; -} - -message Index { - required string entity_type = 1; - required bool ancestor = 5; - repeated group Property = 2 { - required string name = 3; - enum Direction { - ASCENDING = 1; - DESCENDING = 2; - } - optional Direction direction = 4 [default = ASCENDING]; - } -} - -message CompositeIndex { - required string app_id = 1; - required int64 id = 2; - required Index definition = 3; - - enum State { - WRITE_ONLY = 1; - READ_WRITE = 2; - DELETED = 3; - ERROR = 4; - } - required State state = 4; - - optional bool only_use_if_required = 6 [default = false]; -} - -message IndexPostfix { - message IndexValue { - required string property_name = 1; - required PropertyValue value = 2; - } - - repeated IndexValue index_value = 1; - - optional Reference key = 2; - - optional bool before = 3 [default=true]; -} - -message IndexPosition { - optional string key = 1; - - optional bool before = 2 [default=true]; -} - -message Snapshot { - enum Status { - INACTIVE = 0; - ACTIVE = 1; - } - - required int64 ts = 1; -} - -message InternalHeader { - optional string qos = 1; -} - -message Transaction { - optional InternalHeader header = 4; - required fixed64 handle = 1; - required string app = 2; - optional bool mark_changes = 3 [default = false]; -} - -message Query { - optional InternalHeader header = 39; - - required string app = 1; - optional string name_space = 29; - - optional string kind = 3; - optional Reference ancestor = 17; - - repeated group Filter = 4 { - enum Operator { - LESS_THAN = 1; - LESS_THAN_OR_EQUAL = 2; - GREATER_THAN = 3; - GREATER_THAN_OR_EQUAL = 4; - EQUAL = 5; - IN = 6; - EXISTS = 7; - } - - required Operator op = 6; - repeated Property property = 14; - } - - optional string search_query = 8; - - repeated group Order = 9 { - enum Direction { - ASCENDING = 1; - DESCENDING = 2; - } - - required string property = 10; - optional Direction direction = 11 [default = ASCENDING]; - } - - enum Hint { - ORDER_FIRST = 1; - ANCESTOR_FIRST = 2; - FILTER_FIRST = 3; - } - optional Hint hint = 18; - - optional int32 count = 23; - - optional int32 offset = 12 [default = 0]; - - optional int32 limit = 16; - - optional CompiledCursor compiled_cursor = 30; - optional CompiledCursor end_compiled_cursor = 31; - - repeated CompositeIndex composite_index = 19; - - optional bool require_perfect_plan = 20 [default = false]; - - optional bool keys_only = 21 [default = false]; - - optional Transaction transaction = 22; - - optional bool compile = 25 [default = false]; - - optional int64 failover_ms = 26; - - optional bool strong = 32; - - repeated string property_name = 33; - - repeated string group_by_property_name = 34; - - optional bool distinct = 24; - - optional int64 min_safe_time_seconds = 35; - - repeated string safe_replica_name = 36; - - optional bool persist_offset = 37 [default=false]; -} - -message CompiledQuery { - required group PrimaryScan = 1 { - optional string index_name = 2; - - optional string start_key = 3; - optional bool start_inclusive = 4; - optional string end_key = 5; - optional bool end_inclusive = 6; - - repeated string start_postfix_value = 22; - repeated string end_postfix_value = 23; - - optional int64 end_unapplied_log_timestamp_us = 19; - } - - repeated group MergeJoinScan = 7 { - required string index_name = 8; - - repeated string prefix_value = 9; - - optional bool value_prefix = 20 [default=false]; - } - - optional Index index_def = 21; - - optional int32 offset = 10 [default = 0]; - - optional int32 limit = 11; - - required bool keys_only = 12; - - repeated string property_name = 24; - - optional int32 distinct_infix_size = 25; - - optional group EntityFilter = 13 { - optional bool distinct = 14 [default=false]; - - optional string kind = 17; - optional Reference ancestor = 18; - } -} - -message CompiledCursor { - optional group Position = 2 { - optional string start_key = 27; - - repeated group IndexValue = 29 { - optional string property = 30; - required PropertyValue value = 31; - } - - optional Reference key = 32; - - optional bool start_inclusive = 28 [default=true]; - } -} - -message Cursor { - required fixed64 cursor = 1; - - optional string app = 2; -} - -message Error { - enum ErrorCode { - BAD_REQUEST = 1; - CONCURRENT_TRANSACTION = 2; - INTERNAL_ERROR = 3; - NEED_INDEX = 4; - TIMEOUT = 5; - PERMISSION_DENIED = 6; - BIGTABLE_ERROR = 7; - COMMITTED_BUT_STILL_APPLYING = 8; - CAPABILITY_DISABLED = 9; - TRY_ALTERNATE_BACKEND = 10; - SAFE_TIME_TOO_OLD = 11; - } -} - -message Cost { - optional int32 index_writes = 1; - optional int32 index_write_bytes = 2; - optional int32 entity_writes = 3; - optional int32 entity_write_bytes = 4; - optional group CommitCost = 5 { - optional int32 requested_entity_puts = 6; - optional int32 requested_entity_deletes = 7; - }; - optional int32 approximate_storage_delta = 8; - optional int32 id_sequence_updates = 9; -} - -message GetRequest { - optional InternalHeader header = 6; - - repeated Reference key = 1; - optional Transaction transaction = 2; - - optional int64 failover_ms = 3; - - optional bool strong = 4; - - optional bool allow_deferred = 5 [default=false]; -} - -message GetResponse { - repeated group Entity = 1 { - optional EntityProto entity = 2; - optional Reference key = 4; - - optional int64 version = 3; - } - - repeated Reference deferred = 5; - - optional bool in_order = 6 [default=true]; -} - -message PutRequest { - optional InternalHeader header = 11; - - repeated EntityProto entity = 1; - optional Transaction transaction = 2; - repeated CompositeIndex composite_index = 3; - - optional bool trusted = 4 [default = false]; - - optional bool force = 7 [default = false]; - - optional bool mark_changes = 8 [default = false]; - repeated Snapshot snapshot = 9; - - enum AutoIdPolicy { - CURRENT = 0; - SEQUENTIAL = 1; - } - optional AutoIdPolicy auto_id_policy = 10 [default = CURRENT]; -} - -message PutResponse { - repeated Reference key = 1; - optional Cost cost = 2; - repeated int64 version = 3; -} - -message TouchRequest { - optional InternalHeader header = 10; - - repeated Reference key = 1; - repeated CompositeIndex composite_index = 2; - optional bool force = 3 [default = false]; - repeated Snapshot snapshot = 9; -} - -message TouchResponse { - optional Cost cost = 1; -} - -message DeleteRequest { - optional InternalHeader header = 10; - - repeated Reference key = 6; - optional Transaction transaction = 5; - - optional bool trusted = 4 [default = false]; - - optional bool force = 7 [default = false]; - - optional bool mark_changes = 8 [default = false]; - repeated Snapshot snapshot = 9; -} - -message DeleteResponse { - optional Cost cost = 1; - repeated int64 version = 3; -} - -message NextRequest { - optional InternalHeader header = 5; - - required Cursor cursor = 1; - optional int32 count = 2; - - optional int32 offset = 4 [default = 0]; - - optional bool compile = 3 [default = false]; -} - -message QueryResult { - optional Cursor cursor = 1; - - repeated EntityProto result = 2; - - optional int32 skipped_results = 7; - - required bool more_results = 3; - - optional bool keys_only = 4; - - optional bool index_only = 9; - - optional bool small_ops = 10; - - optional CompiledQuery compiled_query = 5; - - optional CompiledCursor compiled_cursor = 6; - - repeated CompositeIndex index = 8; - - repeated int64 version = 11; -} - -message AllocateIdsRequest { - optional InternalHeader header = 4; - - optional Reference model_key = 1; - - optional int64 size = 2; - - optional int64 max = 3; - - repeated Reference reserve = 5; -} - -message AllocateIdsResponse { - required int64 start = 1; - required int64 end = 2; - optional Cost cost = 3; -} - -message CompositeIndices { - repeated CompositeIndex index = 1; -} - -message AddActionsRequest { - optional InternalHeader header = 3; - - required Transaction transaction = 1; - repeated Action action = 2; -} - -message AddActionsResponse { -} - -message BeginTransactionRequest { - optional InternalHeader header = 3; - - required string app = 1; - optional bool allow_multiple_eg = 2 [default = false]; -} - -message CommitResponse { - optional Cost cost = 1; - - repeated group Version = 3 { - required Reference root_entity_key = 4; - required int64 version = 5; - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/identity.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/identity.go deleted file mode 100644 index e26347c8823..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/identity.go +++ /dev/null @@ -1,12 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -// These functions are implementations of the wrapper functions -// in ../appengine/identity.go. See that file for commentary. - -func AppID(fqai string) string { - return appID(fqai) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/identity_vm.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/identity_vm.go deleted file mode 100644 index 2a649010e4f..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/identity_vm.go +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -import ( - "net/http" - "os" -) - -// These functions are implementations of the wrapper functions -// in ../appengine/identity.go. See that file for commentary. - -const ( - hDefaultVersionHostname = "X-AppEngine-Default-Version-Hostname" - hRequestLogId = "X-AppEngine-Request-Log-Id" - hDatacenter = "X-AppEngine-Datacenter" -) - -func DefaultVersionHostname(req interface{}) string { - return req.(*http.Request).Header.Get(hDefaultVersionHostname) -} - -func RequestID(req interface{}) string { - return req.(*http.Request).Header.Get(hRequestLogId) -} - -func Datacenter(req interface{}) string { - return req.(*http.Request).Header.Get(hDatacenter) -} - -func ServerSoftware() string { - // TODO(dsymonds): Remove fallback when we've verified this. - if s := os.Getenv("SERVER_SOFTWARE"); s != "" { - return s - } - return "Google App Engine/1.x.x" -} - -// TODO(dsymonds): Remove the metadata fetches. - -func ModuleName() string { - if s := os.Getenv("GAE_MODULE_NAME"); s != "" { - return s - } - return string(mustGetMetadata("instance/attributes/gae_backend_name")) -} - -func VersionID() string { - if s := os.Getenv("GAE_MODULE_VERSION"); s != "" { - return s - } - return string(mustGetMetadata("instance/attributes/gae_backend_version")) -} - -func InstanceID() string { - if s := os.Getenv("GAE_MODULE_INSTANCE"); s != "" { - return s - } - return string(mustGetMetadata("instance/attributes/gae_backend_instance")) -} - -func partitionlessAppID() string { - // gae_project has everything except the partition prefix. - appID := os.Getenv("GAE_LONG_APP_ID") - if appID == "" { - appID = string(mustGetMetadata("instance/attributes/gae_project")) - } - return appID -} - -func fullyQualifiedAppID() string { - appID := partitionlessAppID() - - part := os.Getenv("GAE_PARTITION") - if part == "" { - part = string(mustGetMetadata("instance/attributes/gae_partition")) - } - - if part != "" { - appID = part + "~" + appID - } - return appID -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.pb.go deleted file mode 100644 index b66097e4612..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.pb.go +++ /dev/null @@ -1,848 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/image/images_service.proto -// DO NOT EDIT! - -/* -Package image is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/image/images_service.proto - -It has these top-level messages: - ImagesServiceError - ImagesServiceTransform - Transform - ImageData - InputSettings - OutputSettings - ImagesTransformRequest - ImagesTransformResponse - CompositeImageOptions - ImagesCanvas - ImagesCompositeRequest - ImagesCompositeResponse - ImagesHistogramRequest - ImagesHistogram - ImagesHistogramResponse - ImagesGetUrlBaseRequest - ImagesGetUrlBaseResponse - ImagesDeleteUrlBaseRequest - ImagesDeleteUrlBaseResponse -*/ -package image - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type ImagesServiceError_ErrorCode int32 - -const ( - ImagesServiceError_UNSPECIFIED_ERROR ImagesServiceError_ErrorCode = 1 - ImagesServiceError_BAD_TRANSFORM_DATA ImagesServiceError_ErrorCode = 2 - ImagesServiceError_NOT_IMAGE ImagesServiceError_ErrorCode = 3 - ImagesServiceError_BAD_IMAGE_DATA ImagesServiceError_ErrorCode = 4 - ImagesServiceError_IMAGE_TOO_LARGE ImagesServiceError_ErrorCode = 5 - ImagesServiceError_INVALID_BLOB_KEY ImagesServiceError_ErrorCode = 6 - ImagesServiceError_ACCESS_DENIED ImagesServiceError_ErrorCode = 7 - ImagesServiceError_OBJECT_NOT_FOUND ImagesServiceError_ErrorCode = 8 -) - -var ImagesServiceError_ErrorCode_name = map[int32]string{ - 1: "UNSPECIFIED_ERROR", - 2: "BAD_TRANSFORM_DATA", - 3: "NOT_IMAGE", - 4: "BAD_IMAGE_DATA", - 5: "IMAGE_TOO_LARGE", - 6: "INVALID_BLOB_KEY", - 7: "ACCESS_DENIED", - 8: "OBJECT_NOT_FOUND", -} -var ImagesServiceError_ErrorCode_value = map[string]int32{ - "UNSPECIFIED_ERROR": 1, - "BAD_TRANSFORM_DATA": 2, - "NOT_IMAGE": 3, - "BAD_IMAGE_DATA": 4, - "IMAGE_TOO_LARGE": 5, - "INVALID_BLOB_KEY": 6, - "ACCESS_DENIED": 7, - "OBJECT_NOT_FOUND": 8, -} - -func (x ImagesServiceError_ErrorCode) Enum() *ImagesServiceError_ErrorCode { - p := new(ImagesServiceError_ErrorCode) - *p = x - return p -} -func (x ImagesServiceError_ErrorCode) String() string { - return proto.EnumName(ImagesServiceError_ErrorCode_name, int32(x)) -} -func (x *ImagesServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(ImagesServiceError_ErrorCode_value, data, "ImagesServiceError_ErrorCode") - if err != nil { - return err - } - *x = ImagesServiceError_ErrorCode(value) - return nil -} - -type ImagesServiceTransform_Type int32 - -const ( - ImagesServiceTransform_RESIZE ImagesServiceTransform_Type = 1 - ImagesServiceTransform_ROTATE ImagesServiceTransform_Type = 2 - ImagesServiceTransform_HORIZONTAL_FLIP ImagesServiceTransform_Type = 3 - ImagesServiceTransform_VERTICAL_FLIP ImagesServiceTransform_Type = 4 - ImagesServiceTransform_CROP ImagesServiceTransform_Type = 5 - ImagesServiceTransform_IM_FEELING_LUCKY ImagesServiceTransform_Type = 6 -) - -var ImagesServiceTransform_Type_name = map[int32]string{ - 1: "RESIZE", - 2: "ROTATE", - 3: "HORIZONTAL_FLIP", - 4: "VERTICAL_FLIP", - 5: "CROP", - 6: "IM_FEELING_LUCKY", -} -var ImagesServiceTransform_Type_value = map[string]int32{ - "RESIZE": 1, - "ROTATE": 2, - "HORIZONTAL_FLIP": 3, - "VERTICAL_FLIP": 4, - "CROP": 5, - "IM_FEELING_LUCKY": 6, -} - -func (x ImagesServiceTransform_Type) Enum() *ImagesServiceTransform_Type { - p := new(ImagesServiceTransform_Type) - *p = x - return p -} -func (x ImagesServiceTransform_Type) String() string { - return proto.EnumName(ImagesServiceTransform_Type_name, int32(x)) -} -func (x *ImagesServiceTransform_Type) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(ImagesServiceTransform_Type_value, data, "ImagesServiceTransform_Type") - if err != nil { - return err - } - *x = ImagesServiceTransform_Type(value) - return nil -} - -type InputSettings_ORIENTATION_CORRECTION_TYPE int32 - -const ( - InputSettings_UNCHANGED_ORIENTATION InputSettings_ORIENTATION_CORRECTION_TYPE = 0 - InputSettings_CORRECT_ORIENTATION InputSettings_ORIENTATION_CORRECTION_TYPE = 1 -) - -var InputSettings_ORIENTATION_CORRECTION_TYPE_name = map[int32]string{ - 0: "UNCHANGED_ORIENTATION", - 1: "CORRECT_ORIENTATION", -} -var InputSettings_ORIENTATION_CORRECTION_TYPE_value = map[string]int32{ - "UNCHANGED_ORIENTATION": 0, - "CORRECT_ORIENTATION": 1, -} - -func (x InputSettings_ORIENTATION_CORRECTION_TYPE) Enum() *InputSettings_ORIENTATION_CORRECTION_TYPE { - p := new(InputSettings_ORIENTATION_CORRECTION_TYPE) - *p = x - return p -} -func (x InputSettings_ORIENTATION_CORRECTION_TYPE) String() string { - return proto.EnumName(InputSettings_ORIENTATION_CORRECTION_TYPE_name, int32(x)) -} -func (x *InputSettings_ORIENTATION_CORRECTION_TYPE) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(InputSettings_ORIENTATION_CORRECTION_TYPE_value, data, "InputSettings_ORIENTATION_CORRECTION_TYPE") - if err != nil { - return err - } - *x = InputSettings_ORIENTATION_CORRECTION_TYPE(value) - return nil -} - -type OutputSettings_MIME_TYPE int32 - -const ( - OutputSettings_PNG OutputSettings_MIME_TYPE = 0 - OutputSettings_JPEG OutputSettings_MIME_TYPE = 1 - OutputSettings_WEBP OutputSettings_MIME_TYPE = 2 -) - -var OutputSettings_MIME_TYPE_name = map[int32]string{ - 0: "PNG", - 1: "JPEG", - 2: "WEBP", -} -var OutputSettings_MIME_TYPE_value = map[string]int32{ - "PNG": 0, - "JPEG": 1, - "WEBP": 2, -} - -func (x OutputSettings_MIME_TYPE) Enum() *OutputSettings_MIME_TYPE { - p := new(OutputSettings_MIME_TYPE) - *p = x - return p -} -func (x OutputSettings_MIME_TYPE) String() string { - return proto.EnumName(OutputSettings_MIME_TYPE_name, int32(x)) -} -func (x *OutputSettings_MIME_TYPE) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(OutputSettings_MIME_TYPE_value, data, "OutputSettings_MIME_TYPE") - if err != nil { - return err - } - *x = OutputSettings_MIME_TYPE(value) - return nil -} - -type CompositeImageOptions_ANCHOR int32 - -const ( - CompositeImageOptions_TOP_LEFT CompositeImageOptions_ANCHOR = 0 - CompositeImageOptions_TOP CompositeImageOptions_ANCHOR = 1 - CompositeImageOptions_TOP_RIGHT CompositeImageOptions_ANCHOR = 2 - CompositeImageOptions_LEFT CompositeImageOptions_ANCHOR = 3 - CompositeImageOptions_CENTER CompositeImageOptions_ANCHOR = 4 - CompositeImageOptions_RIGHT CompositeImageOptions_ANCHOR = 5 - CompositeImageOptions_BOTTOM_LEFT CompositeImageOptions_ANCHOR = 6 - CompositeImageOptions_BOTTOM CompositeImageOptions_ANCHOR = 7 - CompositeImageOptions_BOTTOM_RIGHT CompositeImageOptions_ANCHOR = 8 -) - -var CompositeImageOptions_ANCHOR_name = map[int32]string{ - 0: "TOP_LEFT", - 1: "TOP", - 2: "TOP_RIGHT", - 3: "LEFT", - 4: "CENTER", - 5: "RIGHT", - 6: "BOTTOM_LEFT", - 7: "BOTTOM", - 8: "BOTTOM_RIGHT", -} -var CompositeImageOptions_ANCHOR_value = map[string]int32{ - "TOP_LEFT": 0, - "TOP": 1, - "TOP_RIGHT": 2, - "LEFT": 3, - "CENTER": 4, - "RIGHT": 5, - "BOTTOM_LEFT": 6, - "BOTTOM": 7, - "BOTTOM_RIGHT": 8, -} - -func (x CompositeImageOptions_ANCHOR) Enum() *CompositeImageOptions_ANCHOR { - p := new(CompositeImageOptions_ANCHOR) - *p = x - return p -} -func (x CompositeImageOptions_ANCHOR) String() string { - return proto.EnumName(CompositeImageOptions_ANCHOR_name, int32(x)) -} -func (x *CompositeImageOptions_ANCHOR) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(CompositeImageOptions_ANCHOR_value, data, "CompositeImageOptions_ANCHOR") - if err != nil { - return err - } - *x = CompositeImageOptions_ANCHOR(value) - return nil -} - -type ImagesServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesServiceError) Reset() { *m = ImagesServiceError{} } -func (m *ImagesServiceError) String() string { return proto.CompactTextString(m) } -func (*ImagesServiceError) ProtoMessage() {} - -type ImagesServiceTransform struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesServiceTransform) Reset() { *m = ImagesServiceTransform{} } -func (m *ImagesServiceTransform) String() string { return proto.CompactTextString(m) } -func (*ImagesServiceTransform) ProtoMessage() {} - -type Transform struct { - Width *int32 `protobuf:"varint,1,opt,name=width" json:"width,omitempty"` - Height *int32 `protobuf:"varint,2,opt,name=height" json:"height,omitempty"` - CropToFit *bool `protobuf:"varint,11,opt,name=crop_to_fit,def=0" json:"crop_to_fit,omitempty"` - CropOffsetX *float32 `protobuf:"fixed32,12,opt,name=crop_offset_x,def=0.5" json:"crop_offset_x,omitempty"` - CropOffsetY *float32 `protobuf:"fixed32,13,opt,name=crop_offset_y,def=0.5" json:"crop_offset_y,omitempty"` - Rotate *int32 `protobuf:"varint,3,opt,name=rotate,def=0" json:"rotate,omitempty"` - HorizontalFlip *bool `protobuf:"varint,4,opt,name=horizontal_flip,def=0" json:"horizontal_flip,omitempty"` - VerticalFlip *bool `protobuf:"varint,5,opt,name=vertical_flip,def=0" json:"vertical_flip,omitempty"` - CropLeftX *float32 `protobuf:"fixed32,6,opt,name=crop_left_x,def=0" json:"crop_left_x,omitempty"` - CropTopY *float32 `protobuf:"fixed32,7,opt,name=crop_top_y,def=0" json:"crop_top_y,omitempty"` - CropRightX *float32 `protobuf:"fixed32,8,opt,name=crop_right_x,def=1" json:"crop_right_x,omitempty"` - CropBottomY *float32 `protobuf:"fixed32,9,opt,name=crop_bottom_y,def=1" json:"crop_bottom_y,omitempty"` - Autolevels *bool `protobuf:"varint,10,opt,name=autolevels,def=0" json:"autolevels,omitempty"` - AllowStretch *bool `protobuf:"varint,14,opt,name=allow_stretch,def=0" json:"allow_stretch,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Transform) Reset() { *m = Transform{} } -func (m *Transform) String() string { return proto.CompactTextString(m) } -func (*Transform) ProtoMessage() {} - -const Default_Transform_CropToFit bool = false -const Default_Transform_CropOffsetX float32 = 0.5 -const Default_Transform_CropOffsetY float32 = 0.5 -const Default_Transform_Rotate int32 = 0 -const Default_Transform_HorizontalFlip bool = false -const Default_Transform_VerticalFlip bool = false -const Default_Transform_CropLeftX float32 = 0 -const Default_Transform_CropTopY float32 = 0 -const Default_Transform_CropRightX float32 = 1 -const Default_Transform_CropBottomY float32 = 1 -const Default_Transform_Autolevels bool = false -const Default_Transform_AllowStretch bool = false - -func (m *Transform) GetWidth() int32 { - if m != nil && m.Width != nil { - return *m.Width - } - return 0 -} - -func (m *Transform) GetHeight() int32 { - if m != nil && m.Height != nil { - return *m.Height - } - return 0 -} - -func (m *Transform) GetCropToFit() bool { - if m != nil && m.CropToFit != nil { - return *m.CropToFit - } - return Default_Transform_CropToFit -} - -func (m *Transform) GetCropOffsetX() float32 { - if m != nil && m.CropOffsetX != nil { - return *m.CropOffsetX - } - return Default_Transform_CropOffsetX -} - -func (m *Transform) GetCropOffsetY() float32 { - if m != nil && m.CropOffsetY != nil { - return *m.CropOffsetY - } - return Default_Transform_CropOffsetY -} - -func (m *Transform) GetRotate() int32 { - if m != nil && m.Rotate != nil { - return *m.Rotate - } - return Default_Transform_Rotate -} - -func (m *Transform) GetHorizontalFlip() bool { - if m != nil && m.HorizontalFlip != nil { - return *m.HorizontalFlip - } - return Default_Transform_HorizontalFlip -} - -func (m *Transform) GetVerticalFlip() bool { - if m != nil && m.VerticalFlip != nil { - return *m.VerticalFlip - } - return Default_Transform_VerticalFlip -} - -func (m *Transform) GetCropLeftX() float32 { - if m != nil && m.CropLeftX != nil { - return *m.CropLeftX - } - return Default_Transform_CropLeftX -} - -func (m *Transform) GetCropTopY() float32 { - if m != nil && m.CropTopY != nil { - return *m.CropTopY - } - return Default_Transform_CropTopY -} - -func (m *Transform) GetCropRightX() float32 { - if m != nil && m.CropRightX != nil { - return *m.CropRightX - } - return Default_Transform_CropRightX -} - -func (m *Transform) GetCropBottomY() float32 { - if m != nil && m.CropBottomY != nil { - return *m.CropBottomY - } - return Default_Transform_CropBottomY -} - -func (m *Transform) GetAutolevels() bool { - if m != nil && m.Autolevels != nil { - return *m.Autolevels - } - return Default_Transform_Autolevels -} - -func (m *Transform) GetAllowStretch() bool { - if m != nil && m.AllowStretch != nil { - return *m.AllowStretch - } - return Default_Transform_AllowStretch -} - -type ImageData struct { - Content []byte `protobuf:"bytes,1,req,name=content" json:"content,omitempty"` - BlobKey *string `protobuf:"bytes,2,opt,name=blob_key" json:"blob_key,omitempty"` - Width *int32 `protobuf:"varint,3,opt,name=width" json:"width,omitempty"` - Height *int32 `protobuf:"varint,4,opt,name=height" json:"height,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImageData) Reset() { *m = ImageData{} } -func (m *ImageData) String() string { return proto.CompactTextString(m) } -func (*ImageData) ProtoMessage() {} - -func (m *ImageData) GetContent() []byte { - if m != nil { - return m.Content - } - return nil -} - -func (m *ImageData) GetBlobKey() string { - if m != nil && m.BlobKey != nil { - return *m.BlobKey - } - return "" -} - -func (m *ImageData) GetWidth() int32 { - if m != nil && m.Width != nil { - return *m.Width - } - return 0 -} - -func (m *ImageData) GetHeight() int32 { - if m != nil && m.Height != nil { - return *m.Height - } - return 0 -} - -type InputSettings struct { - CorrectExifOrientation *InputSettings_ORIENTATION_CORRECTION_TYPE `protobuf:"varint,1,opt,name=correct_exif_orientation,enum=appengine.InputSettings_ORIENTATION_CORRECTION_TYPE,def=0" json:"correct_exif_orientation,omitempty"` - ParseMetadata *bool `protobuf:"varint,2,opt,name=parse_metadata,def=0" json:"parse_metadata,omitempty"` - TransparentSubstitutionRgb *int32 `protobuf:"varint,3,opt,name=transparent_substitution_rgb" json:"transparent_substitution_rgb,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *InputSettings) Reset() { *m = InputSettings{} } -func (m *InputSettings) String() string { return proto.CompactTextString(m) } -func (*InputSettings) ProtoMessage() {} - -const Default_InputSettings_CorrectExifOrientation InputSettings_ORIENTATION_CORRECTION_TYPE = InputSettings_UNCHANGED_ORIENTATION -const Default_InputSettings_ParseMetadata bool = false - -func (m *InputSettings) GetCorrectExifOrientation() InputSettings_ORIENTATION_CORRECTION_TYPE { - if m != nil && m.CorrectExifOrientation != nil { - return *m.CorrectExifOrientation - } - return Default_InputSettings_CorrectExifOrientation -} - -func (m *InputSettings) GetParseMetadata() bool { - if m != nil && m.ParseMetadata != nil { - return *m.ParseMetadata - } - return Default_InputSettings_ParseMetadata -} - -func (m *InputSettings) GetTransparentSubstitutionRgb() int32 { - if m != nil && m.TransparentSubstitutionRgb != nil { - return *m.TransparentSubstitutionRgb - } - return 0 -} - -type OutputSettings struct { - MimeType *OutputSettings_MIME_TYPE `protobuf:"varint,1,opt,name=mime_type,enum=appengine.OutputSettings_MIME_TYPE,def=0" json:"mime_type,omitempty"` - Quality *int32 `protobuf:"varint,2,opt,name=quality" json:"quality,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *OutputSettings) Reset() { *m = OutputSettings{} } -func (m *OutputSettings) String() string { return proto.CompactTextString(m) } -func (*OutputSettings) ProtoMessage() {} - -const Default_OutputSettings_MimeType OutputSettings_MIME_TYPE = OutputSettings_PNG - -func (m *OutputSettings) GetMimeType() OutputSettings_MIME_TYPE { - if m != nil && m.MimeType != nil { - return *m.MimeType - } - return Default_OutputSettings_MimeType -} - -func (m *OutputSettings) GetQuality() int32 { - if m != nil && m.Quality != nil { - return *m.Quality - } - return 0 -} - -type ImagesTransformRequest struct { - Image *ImageData `protobuf:"bytes,1,req,name=image" json:"image,omitempty"` - Transform []*Transform `protobuf:"bytes,2,rep,name=transform" json:"transform,omitempty"` - Output *OutputSettings `protobuf:"bytes,3,req,name=output" json:"output,omitempty"` - Input *InputSettings `protobuf:"bytes,4,opt,name=input" json:"input,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesTransformRequest) Reset() { *m = ImagesTransformRequest{} } -func (m *ImagesTransformRequest) String() string { return proto.CompactTextString(m) } -func (*ImagesTransformRequest) ProtoMessage() {} - -func (m *ImagesTransformRequest) GetImage() *ImageData { - if m != nil { - return m.Image - } - return nil -} - -func (m *ImagesTransformRequest) GetTransform() []*Transform { - if m != nil { - return m.Transform - } - return nil -} - -func (m *ImagesTransformRequest) GetOutput() *OutputSettings { - if m != nil { - return m.Output - } - return nil -} - -func (m *ImagesTransformRequest) GetInput() *InputSettings { - if m != nil { - return m.Input - } - return nil -} - -type ImagesTransformResponse struct { - Image *ImageData `protobuf:"bytes,1,req,name=image" json:"image,omitempty"` - SourceMetadata *string `protobuf:"bytes,2,opt,name=source_metadata" json:"source_metadata,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesTransformResponse) Reset() { *m = ImagesTransformResponse{} } -func (m *ImagesTransformResponse) String() string { return proto.CompactTextString(m) } -func (*ImagesTransformResponse) ProtoMessage() {} - -func (m *ImagesTransformResponse) GetImage() *ImageData { - if m != nil { - return m.Image - } - return nil -} - -func (m *ImagesTransformResponse) GetSourceMetadata() string { - if m != nil && m.SourceMetadata != nil { - return *m.SourceMetadata - } - return "" -} - -type CompositeImageOptions struct { - SourceIndex *int32 `protobuf:"varint,1,req,name=source_index" json:"source_index,omitempty"` - XOffset *int32 `protobuf:"varint,2,req,name=x_offset" json:"x_offset,omitempty"` - YOffset *int32 `protobuf:"varint,3,req,name=y_offset" json:"y_offset,omitempty"` - Opacity *float32 `protobuf:"fixed32,4,req,name=opacity" json:"opacity,omitempty"` - Anchor *CompositeImageOptions_ANCHOR `protobuf:"varint,5,req,name=anchor,enum=appengine.CompositeImageOptions_ANCHOR" json:"anchor,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CompositeImageOptions) Reset() { *m = CompositeImageOptions{} } -func (m *CompositeImageOptions) String() string { return proto.CompactTextString(m) } -func (*CompositeImageOptions) ProtoMessage() {} - -func (m *CompositeImageOptions) GetSourceIndex() int32 { - if m != nil && m.SourceIndex != nil { - return *m.SourceIndex - } - return 0 -} - -func (m *CompositeImageOptions) GetXOffset() int32 { - if m != nil && m.XOffset != nil { - return *m.XOffset - } - return 0 -} - -func (m *CompositeImageOptions) GetYOffset() int32 { - if m != nil && m.YOffset != nil { - return *m.YOffset - } - return 0 -} - -func (m *CompositeImageOptions) GetOpacity() float32 { - if m != nil && m.Opacity != nil { - return *m.Opacity - } - return 0 -} - -func (m *CompositeImageOptions) GetAnchor() CompositeImageOptions_ANCHOR { - if m != nil && m.Anchor != nil { - return *m.Anchor - } - return CompositeImageOptions_TOP_LEFT -} - -type ImagesCanvas struct { - Width *int32 `protobuf:"varint,1,req,name=width" json:"width,omitempty"` - Height *int32 `protobuf:"varint,2,req,name=height" json:"height,omitempty"` - Output *OutputSettings `protobuf:"bytes,3,req,name=output" json:"output,omitempty"` - Color *int32 `protobuf:"varint,4,opt,name=color,def=-1" json:"color,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesCanvas) Reset() { *m = ImagesCanvas{} } -func (m *ImagesCanvas) String() string { return proto.CompactTextString(m) } -func (*ImagesCanvas) ProtoMessage() {} - -const Default_ImagesCanvas_Color int32 = -1 - -func (m *ImagesCanvas) GetWidth() int32 { - if m != nil && m.Width != nil { - return *m.Width - } - return 0 -} - -func (m *ImagesCanvas) GetHeight() int32 { - if m != nil && m.Height != nil { - return *m.Height - } - return 0 -} - -func (m *ImagesCanvas) GetOutput() *OutputSettings { - if m != nil { - return m.Output - } - return nil -} - -func (m *ImagesCanvas) GetColor() int32 { - if m != nil && m.Color != nil { - return *m.Color - } - return Default_ImagesCanvas_Color -} - -type ImagesCompositeRequest struct { - Image []*ImageData `protobuf:"bytes,1,rep,name=image" json:"image,omitempty"` - Options []*CompositeImageOptions `protobuf:"bytes,2,rep,name=options" json:"options,omitempty"` - Canvas *ImagesCanvas `protobuf:"bytes,3,req,name=canvas" json:"canvas,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesCompositeRequest) Reset() { *m = ImagesCompositeRequest{} } -func (m *ImagesCompositeRequest) String() string { return proto.CompactTextString(m) } -func (*ImagesCompositeRequest) ProtoMessage() {} - -func (m *ImagesCompositeRequest) GetImage() []*ImageData { - if m != nil { - return m.Image - } - return nil -} - -func (m *ImagesCompositeRequest) GetOptions() []*CompositeImageOptions { - if m != nil { - return m.Options - } - return nil -} - -func (m *ImagesCompositeRequest) GetCanvas() *ImagesCanvas { - if m != nil { - return m.Canvas - } - return nil -} - -type ImagesCompositeResponse struct { - Image *ImageData `protobuf:"bytes,1,req,name=image" json:"image,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesCompositeResponse) Reset() { *m = ImagesCompositeResponse{} } -func (m *ImagesCompositeResponse) String() string { return proto.CompactTextString(m) } -func (*ImagesCompositeResponse) ProtoMessage() {} - -func (m *ImagesCompositeResponse) GetImage() *ImageData { - if m != nil { - return m.Image - } - return nil -} - -type ImagesHistogramRequest struct { - Image *ImageData `protobuf:"bytes,1,req,name=image" json:"image,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesHistogramRequest) Reset() { *m = ImagesHistogramRequest{} } -func (m *ImagesHistogramRequest) String() string { return proto.CompactTextString(m) } -func (*ImagesHistogramRequest) ProtoMessage() {} - -func (m *ImagesHistogramRequest) GetImage() *ImageData { - if m != nil { - return m.Image - } - return nil -} - -type ImagesHistogram struct { - Red []int32 `protobuf:"varint,1,rep,name=red" json:"red,omitempty"` - Green []int32 `protobuf:"varint,2,rep,name=green" json:"green,omitempty"` - Blue []int32 `protobuf:"varint,3,rep,name=blue" json:"blue,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesHistogram) Reset() { *m = ImagesHistogram{} } -func (m *ImagesHistogram) String() string { return proto.CompactTextString(m) } -func (*ImagesHistogram) ProtoMessage() {} - -func (m *ImagesHistogram) GetRed() []int32 { - if m != nil { - return m.Red - } - return nil -} - -func (m *ImagesHistogram) GetGreen() []int32 { - if m != nil { - return m.Green - } - return nil -} - -func (m *ImagesHistogram) GetBlue() []int32 { - if m != nil { - return m.Blue - } - return nil -} - -type ImagesHistogramResponse struct { - Histogram *ImagesHistogram `protobuf:"bytes,1,req,name=histogram" json:"histogram,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesHistogramResponse) Reset() { *m = ImagesHistogramResponse{} } -func (m *ImagesHistogramResponse) String() string { return proto.CompactTextString(m) } -func (*ImagesHistogramResponse) ProtoMessage() {} - -func (m *ImagesHistogramResponse) GetHistogram() *ImagesHistogram { - if m != nil { - return m.Histogram - } - return nil -} - -type ImagesGetUrlBaseRequest struct { - BlobKey *string `protobuf:"bytes,1,req,name=blob_key" json:"blob_key,omitempty"` - CreateSecureUrl *bool `protobuf:"varint,2,opt,name=create_secure_url,def=0" json:"create_secure_url,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesGetUrlBaseRequest) Reset() { *m = ImagesGetUrlBaseRequest{} } -func (m *ImagesGetUrlBaseRequest) String() string { return proto.CompactTextString(m) } -func (*ImagesGetUrlBaseRequest) ProtoMessage() {} - -const Default_ImagesGetUrlBaseRequest_CreateSecureUrl bool = false - -func (m *ImagesGetUrlBaseRequest) GetBlobKey() string { - if m != nil && m.BlobKey != nil { - return *m.BlobKey - } - return "" -} - -func (m *ImagesGetUrlBaseRequest) GetCreateSecureUrl() bool { - if m != nil && m.CreateSecureUrl != nil { - return *m.CreateSecureUrl - } - return Default_ImagesGetUrlBaseRequest_CreateSecureUrl -} - -type ImagesGetUrlBaseResponse struct { - Url *string `protobuf:"bytes,1,req,name=url" json:"url,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesGetUrlBaseResponse) Reset() { *m = ImagesGetUrlBaseResponse{} } -func (m *ImagesGetUrlBaseResponse) String() string { return proto.CompactTextString(m) } -func (*ImagesGetUrlBaseResponse) ProtoMessage() {} - -func (m *ImagesGetUrlBaseResponse) GetUrl() string { - if m != nil && m.Url != nil { - return *m.Url - } - return "" -} - -type ImagesDeleteUrlBaseRequest struct { - BlobKey *string `protobuf:"bytes,1,req,name=blob_key" json:"blob_key,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesDeleteUrlBaseRequest) Reset() { *m = ImagesDeleteUrlBaseRequest{} } -func (m *ImagesDeleteUrlBaseRequest) String() string { return proto.CompactTextString(m) } -func (*ImagesDeleteUrlBaseRequest) ProtoMessage() {} - -func (m *ImagesDeleteUrlBaseRequest) GetBlobKey() string { - if m != nil && m.BlobKey != nil { - return *m.BlobKey - } - return "" -} - -type ImagesDeleteUrlBaseResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *ImagesDeleteUrlBaseResponse) Reset() { *m = ImagesDeleteUrlBaseResponse{} } -func (m *ImagesDeleteUrlBaseResponse) String() string { return proto.CompactTextString(m) } -func (*ImagesDeleteUrlBaseResponse) ProtoMessage() {} - -func init() { - proto.RegisterEnum("appengine.ImagesServiceError_ErrorCode", ImagesServiceError_ErrorCode_name, ImagesServiceError_ErrorCode_value) - proto.RegisterEnum("appengine.ImagesServiceTransform_Type", ImagesServiceTransform_Type_name, ImagesServiceTransform_Type_value) - proto.RegisterEnum("appengine.InputSettings_ORIENTATION_CORRECTION_TYPE", InputSettings_ORIENTATION_CORRECTION_TYPE_name, InputSettings_ORIENTATION_CORRECTION_TYPE_value) - proto.RegisterEnum("appengine.OutputSettings_MIME_TYPE", OutputSettings_MIME_TYPE_name, OutputSettings_MIME_TYPE_value) - proto.RegisterEnum("appengine.CompositeImageOptions_ANCHOR", CompositeImageOptions_ANCHOR_name, CompositeImageOptions_ANCHOR_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.proto deleted file mode 100644 index f0d2ed5d362..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/image/images_service.proto +++ /dev/null @@ -1,162 +0,0 @@ -syntax = "proto2"; -option go_package = "image"; - -package appengine; - -message ImagesServiceError { - enum ErrorCode { - UNSPECIFIED_ERROR = 1; - BAD_TRANSFORM_DATA = 2; - NOT_IMAGE = 3; - BAD_IMAGE_DATA = 4; - IMAGE_TOO_LARGE = 5; - INVALID_BLOB_KEY = 6; - ACCESS_DENIED = 7; - OBJECT_NOT_FOUND = 8; - } -} - -message ImagesServiceTransform { - enum Type { - RESIZE = 1; - ROTATE = 2; - HORIZONTAL_FLIP = 3; - VERTICAL_FLIP = 4; - CROP = 5; - IM_FEELING_LUCKY = 6; - } -} - -message Transform { - optional int32 width = 1; - optional int32 height = 2; - optional bool crop_to_fit = 11 [default = false]; - optional float crop_offset_x = 12 [default = 0.5]; - optional float crop_offset_y = 13 [default = 0.5]; - - optional int32 rotate = 3 [default = 0]; - - optional bool horizontal_flip = 4 [default = false]; - - optional bool vertical_flip = 5 [default = false]; - - optional float crop_left_x = 6 [default = 0.0]; - optional float crop_top_y = 7 [default = 0.0]; - optional float crop_right_x = 8 [default = 1.0]; - optional float crop_bottom_y = 9 [default = 1.0]; - - optional bool autolevels = 10 [default = false]; - - optional bool allow_stretch = 14 [default = false]; -} - -message ImageData { - required bytes content = 1 [ctype=CORD]; - optional string blob_key = 2; - - optional int32 width = 3; - optional int32 height = 4; -} - -message InputSettings { - enum ORIENTATION_CORRECTION_TYPE { - UNCHANGED_ORIENTATION = 0; - CORRECT_ORIENTATION = 1; - } - optional ORIENTATION_CORRECTION_TYPE correct_exif_orientation = 1 - [default=UNCHANGED_ORIENTATION]; - optional bool parse_metadata = 2 [default=false]; - optional int32 transparent_substitution_rgb = 3; -} - -message OutputSettings { - enum MIME_TYPE { - PNG = 0; - JPEG = 1; - WEBP = 2; - } - - optional MIME_TYPE mime_type = 1 [default=PNG]; - optional int32 quality = 2; -} - -message ImagesTransformRequest { - required ImageData image = 1; - repeated Transform transform = 2; - required OutputSettings output = 3; - optional InputSettings input = 4; -} - -message ImagesTransformResponse { - required ImageData image = 1; - optional string source_metadata = 2; -} - -message CompositeImageOptions { - required int32 source_index = 1; - required int32 x_offset = 2; - required int32 y_offset = 3; - required float opacity = 4; - - enum ANCHOR { - TOP_LEFT = 0; - TOP = 1; - TOP_RIGHT = 2; - LEFT = 3; - CENTER = 4; - RIGHT = 5; - BOTTOM_LEFT = 6; - BOTTOM = 7; - BOTTOM_RIGHT = 8; - } - - required ANCHOR anchor = 5; -} - -message ImagesCanvas { - required int32 width = 1; - required int32 height = 2; - required OutputSettings output = 3; - optional int32 color = 4 [default=-1]; -} - -message ImagesCompositeRequest { - repeated ImageData image = 1; - repeated CompositeImageOptions options = 2; - required ImagesCanvas canvas = 3; -} - -message ImagesCompositeResponse { - required ImageData image = 1; -} - -message ImagesHistogramRequest { - required ImageData image = 1; -} - -message ImagesHistogram { - repeated int32 red = 1; - repeated int32 green = 2; - repeated int32 blue = 3; -} - -message ImagesHistogramResponse { - required ImagesHistogram histogram = 1; -} - -message ImagesGetUrlBaseRequest { - required string blob_key = 1; - - optional bool create_secure_url = 2 [default = false]; -} - -message ImagesGetUrlBaseResponse { - required string url = 1; -} - -message ImagesDeleteUrlBaseRequest { - required string blob_key = 1; -} - -message ImagesDeleteUrlBaseResponse { -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/internal.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/internal.go deleted file mode 100644 index 6c637209a67..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/internal.go +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package internal provides support for package appengine. -// -// Programs should not use this package directly. Its API is not stable. -// Use packages appengine and appengine/* instead. -package internal - -import ( - "fmt" - "io" - "log" - "net/http" - "net/url" - "time" - - "github.com/golang/protobuf/proto" - - remotepb "google.golang.org/appengine/internal/remote_api" -) - -type CallOptions struct { - Timeout time.Duration // if non-zero, overrides RPC default -} - -// errorCodeMaps is a map of service name to the error code map for the service. -var errorCodeMaps = make(map[string]map[int32]string) - -// RegisterErrorCodeMap is called from API implementations to register their -// error code map. This should only be called from init functions. -func RegisterErrorCodeMap(service string, m map[int32]string) { - errorCodeMaps[service] = m -} - -type timeoutCodeKey struct { - service string - code int32 -} - -// timeoutCodes is the set of service+code pairs that represent timeouts. -var timeoutCodes = make(map[timeoutCodeKey]bool) - -func RegisterTimeoutErrorCode(service string, code int32) { - timeoutCodes[timeoutCodeKey{service, code}] = true -} - -// APIError is the type returned by appengine.Context's Call method -// when an API call fails in an API-specific way. This may be, for instance, -// a taskqueue API call failing with TaskQueueServiceError::UNKNOWN_QUEUE. -type APIError struct { - Service string - Detail string - Code int32 // API-specific error code -} - -func (e *APIError) Error() string { - if e.Code == 0 { - if e.Detail == "" { - return "APIError " - } - return e.Detail - } - s := fmt.Sprintf("API error %d", e.Code) - if m, ok := errorCodeMaps[e.Service]; ok { - s += " (" + e.Service + ": " + m[e.Code] + ")" - } else { - // Shouldn't happen, but provide a bit more detail if it does. - s = e.Service + " " + s - } - if e.Detail != "" { - s += ": " + e.Detail - } - return s -} - -func (e *APIError) IsTimeout() bool { - return timeoutCodes[timeoutCodeKey{e.Service, e.Code}] -} - -// CallError is the type returned by appengine.Context's Call method when an -// API call fails in a generic way, such as RpcError::CAPABILITY_DISABLED. -type CallError struct { - Detail string - Code int32 - // TODO: Remove this if we get a distinguishable error code. - Timeout bool -} - -func (e *CallError) Error() string { - var msg string - switch remotepb.RpcError_ErrorCode(e.Code) { - case remotepb.RpcError_UNKNOWN: - return e.Detail - case remotepb.RpcError_OVER_QUOTA: - msg = "Over quota" - case remotepb.RpcError_CAPABILITY_DISABLED: - msg = "Capability disabled" - case remotepb.RpcError_CANCELLED: - msg = "Canceled" - default: - msg = fmt.Sprintf("Call error %d", e.Code) - } - s := msg + ": " + e.Detail - if e.Timeout { - s += " (timeout)" - } - return s -} - -func (e *CallError) IsTimeout() bool { - return e.Timeout -} - -// The comment below must not be changed. -// It is used by go-app-builder to recognise that this package has -// the internal.Main function to use in the synthetic main. -// The gophers party all night; the rabbits provide the beats. - -// Main is designed so that the complete generated main package is: -// -// package main -// -// import ( -// "google.golang.org/appengine/internal" -// -// _ "myapp/package0" -// _ "myapp/package1" -// ) -// -// func main() { -// internal.Main() -// } -// -// The "myapp/packageX" packages are expected to register HTTP handlers -// in their init functions. -func Main() { - installHealthChecker(http.DefaultServeMux) - - if err := http.ListenAndServe(":8080", http.HandlerFunc(handleHTTP)); err != nil { - log.Fatalf("http.ListenAndServe: %v", err) - } -} - -func installHealthChecker(mux *http.ServeMux) { - // If no health check handler has been installed by this point, add a trivial one. - const healthPath = "/_ah/health" - hreq := &http.Request{ - Method: "GET", - URL: &url.URL{ - Path: healthPath, - }, - } - if _, pat := mux.Handler(hreq); pat != healthPath { - mux.HandleFunc(healthPath, func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "ok") - }) - } -} - -// NamespaceMods is a map from API service to a function that will mutate an RPC request to attach a namespace. -// The function should be prepared to be called on the same message more than once; it should only modify the -// RPC request the first time. -var NamespaceMods = make(map[string]func(m proto.Message, namespace string)) diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/internal_test.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/internal_test.go deleted file mode 100644 index 226028d810e..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/internal_test.go +++ /dev/null @@ -1,54 +0,0 @@ -package internal - -import ( - "io" - "io/ioutil" - "net/http" - "net/http/httptest" - "testing" -) - -func TestInstallingHealthChecker(t *testing.T) { - try := func(desc string, mux *http.ServeMux, wantCode int, wantBody string) { - installHealthChecker(mux) - srv := httptest.NewServer(mux) - defer srv.Close() - - resp, err := http.Get(srv.URL + "/_ah/health") - if err != nil { - t.Errorf("%s: http.Get: %v", desc, err) - return - } - defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - t.Errorf("%s: reading body: %v", desc, err) - return - } - - if resp.StatusCode != wantCode { - t.Errorf("%s: got HTTP %d, want %d", desc, resp.StatusCode, wantCode) - return - } - if wantBody != "" && string(body) != wantBody { - t.Errorf("%s: got HTTP body %q, want %q", desc, body, wantBody) - return - } - } - - // If there's no handlers, or only a root handler, a health checker should be installed. - try("empty mux", http.NewServeMux(), 200, "ok") - mux := http.NewServeMux() - mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - io.WriteString(w, "root handler") - }) - try("mux with root handler", mux, 200, "ok") - - // If there's a custom health check handler, one should not be installed. - mux = http.NewServeMux() - mux.HandleFunc("/_ah/health", func(w http.ResponseWriter, r *http.Request) { - w.WriteHeader(418) - io.WriteString(w, "I'm short and stout!") - }) - try("mux with custom health checker", mux, 418, "I'm short and stout!") -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.pb.go deleted file mode 100644 index 5aae0a76a91..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.pb.go +++ /dev/null @@ -1,898 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/log/log_service.proto -// DO NOT EDIT! - -/* -Package log is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/log/log_service.proto - -It has these top-level messages: - LogServiceError - UserAppLogLine - UserAppLogGroup - FlushRequest - SetStatusRequest - LogOffset - LogLine - RequestLog - LogModuleVersion - LogReadRequest - LogReadResponse - LogUsageRecord - LogUsageRequest - LogUsageResponse -*/ -package log - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type LogServiceError_ErrorCode int32 - -const ( - LogServiceError_OK LogServiceError_ErrorCode = 0 - LogServiceError_INVALID_REQUEST LogServiceError_ErrorCode = 1 - LogServiceError_STORAGE_ERROR LogServiceError_ErrorCode = 2 -) - -var LogServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "INVALID_REQUEST", - 2: "STORAGE_ERROR", -} -var LogServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "INVALID_REQUEST": 1, - "STORAGE_ERROR": 2, -} - -func (x LogServiceError_ErrorCode) Enum() *LogServiceError_ErrorCode { - p := new(LogServiceError_ErrorCode) - *p = x - return p -} -func (x LogServiceError_ErrorCode) String() string { - return proto.EnumName(LogServiceError_ErrorCode_name, int32(x)) -} -func (x *LogServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(LogServiceError_ErrorCode_value, data, "LogServiceError_ErrorCode") - if err != nil { - return err - } - *x = LogServiceError_ErrorCode(value) - return nil -} - -type LogServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogServiceError) Reset() { *m = LogServiceError{} } -func (m *LogServiceError) String() string { return proto.CompactTextString(m) } -func (*LogServiceError) ProtoMessage() {} - -type UserAppLogLine struct { - TimestampUsec *int64 `protobuf:"varint,1,req,name=timestamp_usec" json:"timestamp_usec,omitempty"` - Level *int64 `protobuf:"varint,2,req,name=level" json:"level,omitempty"` - Message *string `protobuf:"bytes,3,req,name=message" json:"message,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *UserAppLogLine) Reset() { *m = UserAppLogLine{} } -func (m *UserAppLogLine) String() string { return proto.CompactTextString(m) } -func (*UserAppLogLine) ProtoMessage() {} - -func (m *UserAppLogLine) GetTimestampUsec() int64 { - if m != nil && m.TimestampUsec != nil { - return *m.TimestampUsec - } - return 0 -} - -func (m *UserAppLogLine) GetLevel() int64 { - if m != nil && m.Level != nil { - return *m.Level - } - return 0 -} - -func (m *UserAppLogLine) GetMessage() string { - if m != nil && m.Message != nil { - return *m.Message - } - return "" -} - -type UserAppLogGroup struct { - LogLine []*UserAppLogLine `protobuf:"bytes,2,rep,name=log_line" json:"log_line,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *UserAppLogGroup) Reset() { *m = UserAppLogGroup{} } -func (m *UserAppLogGroup) String() string { return proto.CompactTextString(m) } -func (*UserAppLogGroup) ProtoMessage() {} - -func (m *UserAppLogGroup) GetLogLine() []*UserAppLogLine { - if m != nil { - return m.LogLine - } - return nil -} - -type FlushRequest struct { - Logs []byte `protobuf:"bytes,1,opt,name=logs" json:"logs,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FlushRequest) Reset() { *m = FlushRequest{} } -func (m *FlushRequest) String() string { return proto.CompactTextString(m) } -func (*FlushRequest) ProtoMessage() {} - -func (m *FlushRequest) GetLogs() []byte { - if m != nil { - return m.Logs - } - return nil -} - -type SetStatusRequest struct { - Status *string `protobuf:"bytes,1,req,name=status" json:"status,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SetStatusRequest) Reset() { *m = SetStatusRequest{} } -func (m *SetStatusRequest) String() string { return proto.CompactTextString(m) } -func (*SetStatusRequest) ProtoMessage() {} - -func (m *SetStatusRequest) GetStatus() string { - if m != nil && m.Status != nil { - return *m.Status - } - return "" -} - -type LogOffset struct { - RequestId []byte `protobuf:"bytes,1,opt,name=request_id" json:"request_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogOffset) Reset() { *m = LogOffset{} } -func (m *LogOffset) String() string { return proto.CompactTextString(m) } -func (*LogOffset) ProtoMessage() {} - -func (m *LogOffset) GetRequestId() []byte { - if m != nil { - return m.RequestId - } - return nil -} - -type LogLine struct { - Time *int64 `protobuf:"varint,1,req,name=time" json:"time,omitempty"` - Level *int32 `protobuf:"varint,2,req,name=level" json:"level,omitempty"` - LogMessage *string `protobuf:"bytes,3,req,name=log_message" json:"log_message,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogLine) Reset() { *m = LogLine{} } -func (m *LogLine) String() string { return proto.CompactTextString(m) } -func (*LogLine) ProtoMessage() {} - -func (m *LogLine) GetTime() int64 { - if m != nil && m.Time != nil { - return *m.Time - } - return 0 -} - -func (m *LogLine) GetLevel() int32 { - if m != nil && m.Level != nil { - return *m.Level - } - return 0 -} - -func (m *LogLine) GetLogMessage() string { - if m != nil && m.LogMessage != nil { - return *m.LogMessage - } - return "" -} - -type RequestLog struct { - AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - ModuleId *string `protobuf:"bytes,37,opt,name=module_id,def=default" json:"module_id,omitempty"` - VersionId *string `protobuf:"bytes,2,req,name=version_id" json:"version_id,omitempty"` - RequestId []byte `protobuf:"bytes,3,req,name=request_id" json:"request_id,omitempty"` - Offset *LogOffset `protobuf:"bytes,35,opt,name=offset" json:"offset,omitempty"` - Ip *string `protobuf:"bytes,4,req,name=ip" json:"ip,omitempty"` - Nickname *string `protobuf:"bytes,5,opt,name=nickname" json:"nickname,omitempty"` - StartTime *int64 `protobuf:"varint,6,req,name=start_time" json:"start_time,omitempty"` - EndTime *int64 `protobuf:"varint,7,req,name=end_time" json:"end_time,omitempty"` - Latency *int64 `protobuf:"varint,8,req,name=latency" json:"latency,omitempty"` - Mcycles *int64 `protobuf:"varint,9,req,name=mcycles" json:"mcycles,omitempty"` - Method *string `protobuf:"bytes,10,req,name=method" json:"method,omitempty"` - Resource *string `protobuf:"bytes,11,req,name=resource" json:"resource,omitempty"` - HttpVersion *string `protobuf:"bytes,12,req,name=http_version" json:"http_version,omitempty"` - Status *int32 `protobuf:"varint,13,req,name=status" json:"status,omitempty"` - ResponseSize *int64 `protobuf:"varint,14,req,name=response_size" json:"response_size,omitempty"` - Referrer *string `protobuf:"bytes,15,opt,name=referrer" json:"referrer,omitempty"` - UserAgent *string `protobuf:"bytes,16,opt,name=user_agent" json:"user_agent,omitempty"` - UrlMapEntry *string `protobuf:"bytes,17,req,name=url_map_entry" json:"url_map_entry,omitempty"` - Combined *string `protobuf:"bytes,18,req,name=combined" json:"combined,omitempty"` - ApiMcycles *int64 `protobuf:"varint,19,opt,name=api_mcycles" json:"api_mcycles,omitempty"` - Host *string `protobuf:"bytes,20,opt,name=host" json:"host,omitempty"` - Cost *float64 `protobuf:"fixed64,21,opt,name=cost" json:"cost,omitempty"` - TaskQueueName *string `protobuf:"bytes,22,opt,name=task_queue_name" json:"task_queue_name,omitempty"` - TaskName *string `protobuf:"bytes,23,opt,name=task_name" json:"task_name,omitempty"` - WasLoadingRequest *bool `protobuf:"varint,24,opt,name=was_loading_request" json:"was_loading_request,omitempty"` - PendingTime *int64 `protobuf:"varint,25,opt,name=pending_time" json:"pending_time,omitempty"` - ReplicaIndex *int32 `protobuf:"varint,26,opt,name=replica_index,def=-1" json:"replica_index,omitempty"` - Finished *bool `protobuf:"varint,27,opt,name=finished,def=1" json:"finished,omitempty"` - CloneKey []byte `protobuf:"bytes,28,opt,name=clone_key" json:"clone_key,omitempty"` - Line []*LogLine `protobuf:"bytes,29,rep,name=line" json:"line,omitempty"` - LinesIncomplete *bool `protobuf:"varint,36,opt,name=lines_incomplete" json:"lines_incomplete,omitempty"` - AppEngineRelease []byte `protobuf:"bytes,38,opt,name=app_engine_release" json:"app_engine_release,omitempty"` - ExitReason *int32 `protobuf:"varint,30,opt,name=exit_reason" json:"exit_reason,omitempty"` - WasThrottledForTime *bool `protobuf:"varint,31,opt,name=was_throttled_for_time" json:"was_throttled_for_time,omitempty"` - WasThrottledForRequests *bool `protobuf:"varint,32,opt,name=was_throttled_for_requests" json:"was_throttled_for_requests,omitempty"` - ThrottledTime *int64 `protobuf:"varint,33,opt,name=throttled_time" json:"throttled_time,omitempty"` - ServerName []byte `protobuf:"bytes,34,opt,name=server_name" json:"server_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *RequestLog) Reset() { *m = RequestLog{} } -func (m *RequestLog) String() string { return proto.CompactTextString(m) } -func (*RequestLog) ProtoMessage() {} - -const Default_RequestLog_ModuleId string = "default" -const Default_RequestLog_ReplicaIndex int32 = -1 -const Default_RequestLog_Finished bool = true - -func (m *RequestLog) GetAppId() string { - if m != nil && m.AppId != nil { - return *m.AppId - } - return "" -} - -func (m *RequestLog) GetModuleId() string { - if m != nil && m.ModuleId != nil { - return *m.ModuleId - } - return Default_RequestLog_ModuleId -} - -func (m *RequestLog) GetVersionId() string { - if m != nil && m.VersionId != nil { - return *m.VersionId - } - return "" -} - -func (m *RequestLog) GetRequestId() []byte { - if m != nil { - return m.RequestId - } - return nil -} - -func (m *RequestLog) GetOffset() *LogOffset { - if m != nil { - return m.Offset - } - return nil -} - -func (m *RequestLog) GetIp() string { - if m != nil && m.Ip != nil { - return *m.Ip - } - return "" -} - -func (m *RequestLog) GetNickname() string { - if m != nil && m.Nickname != nil { - return *m.Nickname - } - return "" -} - -func (m *RequestLog) GetStartTime() int64 { - if m != nil && m.StartTime != nil { - return *m.StartTime - } - return 0 -} - -func (m *RequestLog) GetEndTime() int64 { - if m != nil && m.EndTime != nil { - return *m.EndTime - } - return 0 -} - -func (m *RequestLog) GetLatency() int64 { - if m != nil && m.Latency != nil { - return *m.Latency - } - return 0 -} - -func (m *RequestLog) GetMcycles() int64 { - if m != nil && m.Mcycles != nil { - return *m.Mcycles - } - return 0 -} - -func (m *RequestLog) GetMethod() string { - if m != nil && m.Method != nil { - return *m.Method - } - return "" -} - -func (m *RequestLog) GetResource() string { - if m != nil && m.Resource != nil { - return *m.Resource - } - return "" -} - -func (m *RequestLog) GetHttpVersion() string { - if m != nil && m.HttpVersion != nil { - return *m.HttpVersion - } - return "" -} - -func (m *RequestLog) GetStatus() int32 { - if m != nil && m.Status != nil { - return *m.Status - } - return 0 -} - -func (m *RequestLog) GetResponseSize() int64 { - if m != nil && m.ResponseSize != nil { - return *m.ResponseSize - } - return 0 -} - -func (m *RequestLog) GetReferrer() string { - if m != nil && m.Referrer != nil { - return *m.Referrer - } - return "" -} - -func (m *RequestLog) GetUserAgent() string { - if m != nil && m.UserAgent != nil { - return *m.UserAgent - } - return "" -} - -func (m *RequestLog) GetUrlMapEntry() string { - if m != nil && m.UrlMapEntry != nil { - return *m.UrlMapEntry - } - return "" -} - -func (m *RequestLog) GetCombined() string { - if m != nil && m.Combined != nil { - return *m.Combined - } - return "" -} - -func (m *RequestLog) GetApiMcycles() int64 { - if m != nil && m.ApiMcycles != nil { - return *m.ApiMcycles - } - return 0 -} - -func (m *RequestLog) GetHost() string { - if m != nil && m.Host != nil { - return *m.Host - } - return "" -} - -func (m *RequestLog) GetCost() float64 { - if m != nil && m.Cost != nil { - return *m.Cost - } - return 0 -} - -func (m *RequestLog) GetTaskQueueName() string { - if m != nil && m.TaskQueueName != nil { - return *m.TaskQueueName - } - return "" -} - -func (m *RequestLog) GetTaskName() string { - if m != nil && m.TaskName != nil { - return *m.TaskName - } - return "" -} - -func (m *RequestLog) GetWasLoadingRequest() bool { - if m != nil && m.WasLoadingRequest != nil { - return *m.WasLoadingRequest - } - return false -} - -func (m *RequestLog) GetPendingTime() int64 { - if m != nil && m.PendingTime != nil { - return *m.PendingTime - } - return 0 -} - -func (m *RequestLog) GetReplicaIndex() int32 { - if m != nil && m.ReplicaIndex != nil { - return *m.ReplicaIndex - } - return Default_RequestLog_ReplicaIndex -} - -func (m *RequestLog) GetFinished() bool { - if m != nil && m.Finished != nil { - return *m.Finished - } - return Default_RequestLog_Finished -} - -func (m *RequestLog) GetCloneKey() []byte { - if m != nil { - return m.CloneKey - } - return nil -} - -func (m *RequestLog) GetLine() []*LogLine { - if m != nil { - return m.Line - } - return nil -} - -func (m *RequestLog) GetLinesIncomplete() bool { - if m != nil && m.LinesIncomplete != nil { - return *m.LinesIncomplete - } - return false -} - -func (m *RequestLog) GetAppEngineRelease() []byte { - if m != nil { - return m.AppEngineRelease - } - return nil -} - -func (m *RequestLog) GetExitReason() int32 { - if m != nil && m.ExitReason != nil { - return *m.ExitReason - } - return 0 -} - -func (m *RequestLog) GetWasThrottledForTime() bool { - if m != nil && m.WasThrottledForTime != nil { - return *m.WasThrottledForTime - } - return false -} - -func (m *RequestLog) GetWasThrottledForRequests() bool { - if m != nil && m.WasThrottledForRequests != nil { - return *m.WasThrottledForRequests - } - return false -} - -func (m *RequestLog) GetThrottledTime() int64 { - if m != nil && m.ThrottledTime != nil { - return *m.ThrottledTime - } - return 0 -} - -func (m *RequestLog) GetServerName() []byte { - if m != nil { - return m.ServerName - } - return nil -} - -type LogModuleVersion struct { - ModuleId *string `protobuf:"bytes,1,opt,name=module_id,def=default" json:"module_id,omitempty"` - VersionId *string `protobuf:"bytes,2,opt,name=version_id" json:"version_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogModuleVersion) Reset() { *m = LogModuleVersion{} } -func (m *LogModuleVersion) String() string { return proto.CompactTextString(m) } -func (*LogModuleVersion) ProtoMessage() {} - -const Default_LogModuleVersion_ModuleId string = "default" - -func (m *LogModuleVersion) GetModuleId() string { - if m != nil && m.ModuleId != nil { - return *m.ModuleId - } - return Default_LogModuleVersion_ModuleId -} - -func (m *LogModuleVersion) GetVersionId() string { - if m != nil && m.VersionId != nil { - return *m.VersionId - } - return "" -} - -type LogReadRequest struct { - AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - VersionId []string `protobuf:"bytes,2,rep,name=version_id" json:"version_id,omitempty"` - ModuleVersion []*LogModuleVersion `protobuf:"bytes,19,rep,name=module_version" json:"module_version,omitempty"` - StartTime *int64 `protobuf:"varint,3,opt,name=start_time" json:"start_time,omitempty"` - EndTime *int64 `protobuf:"varint,4,opt,name=end_time" json:"end_time,omitempty"` - Offset *LogOffset `protobuf:"bytes,5,opt,name=offset" json:"offset,omitempty"` - RequestId [][]byte `protobuf:"bytes,6,rep,name=request_id" json:"request_id,omitempty"` - MinimumLogLevel *int32 `protobuf:"varint,7,opt,name=minimum_log_level" json:"minimum_log_level,omitempty"` - IncludeIncomplete *bool `protobuf:"varint,8,opt,name=include_incomplete" json:"include_incomplete,omitempty"` - Count *int64 `protobuf:"varint,9,opt,name=count" json:"count,omitempty"` - CombinedLogRegex *string `protobuf:"bytes,14,opt,name=combined_log_regex" json:"combined_log_regex,omitempty"` - HostRegex *string `protobuf:"bytes,15,opt,name=host_regex" json:"host_regex,omitempty"` - ReplicaIndex *int32 `protobuf:"varint,16,opt,name=replica_index" json:"replica_index,omitempty"` - IncludeAppLogs *bool `protobuf:"varint,10,opt,name=include_app_logs" json:"include_app_logs,omitempty"` - AppLogsPerRequest *int32 `protobuf:"varint,17,opt,name=app_logs_per_request" json:"app_logs_per_request,omitempty"` - IncludeHost *bool `protobuf:"varint,11,opt,name=include_host" json:"include_host,omitempty"` - IncludeAll *bool `protobuf:"varint,12,opt,name=include_all" json:"include_all,omitempty"` - CacheIterator *bool `protobuf:"varint,13,opt,name=cache_iterator" json:"cache_iterator,omitempty"` - NumShards *int32 `protobuf:"varint,18,opt,name=num_shards" json:"num_shards,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogReadRequest) Reset() { *m = LogReadRequest{} } -func (m *LogReadRequest) String() string { return proto.CompactTextString(m) } -func (*LogReadRequest) ProtoMessage() {} - -func (m *LogReadRequest) GetAppId() string { - if m != nil && m.AppId != nil { - return *m.AppId - } - return "" -} - -func (m *LogReadRequest) GetVersionId() []string { - if m != nil { - return m.VersionId - } - return nil -} - -func (m *LogReadRequest) GetModuleVersion() []*LogModuleVersion { - if m != nil { - return m.ModuleVersion - } - return nil -} - -func (m *LogReadRequest) GetStartTime() int64 { - if m != nil && m.StartTime != nil { - return *m.StartTime - } - return 0 -} - -func (m *LogReadRequest) GetEndTime() int64 { - if m != nil && m.EndTime != nil { - return *m.EndTime - } - return 0 -} - -func (m *LogReadRequest) GetOffset() *LogOffset { - if m != nil { - return m.Offset - } - return nil -} - -func (m *LogReadRequest) GetRequestId() [][]byte { - if m != nil { - return m.RequestId - } - return nil -} - -func (m *LogReadRequest) GetMinimumLogLevel() int32 { - if m != nil && m.MinimumLogLevel != nil { - return *m.MinimumLogLevel - } - return 0 -} - -func (m *LogReadRequest) GetIncludeIncomplete() bool { - if m != nil && m.IncludeIncomplete != nil { - return *m.IncludeIncomplete - } - return false -} - -func (m *LogReadRequest) GetCount() int64 { - if m != nil && m.Count != nil { - return *m.Count - } - return 0 -} - -func (m *LogReadRequest) GetCombinedLogRegex() string { - if m != nil && m.CombinedLogRegex != nil { - return *m.CombinedLogRegex - } - return "" -} - -func (m *LogReadRequest) GetHostRegex() string { - if m != nil && m.HostRegex != nil { - return *m.HostRegex - } - return "" -} - -func (m *LogReadRequest) GetReplicaIndex() int32 { - if m != nil && m.ReplicaIndex != nil { - return *m.ReplicaIndex - } - return 0 -} - -func (m *LogReadRequest) GetIncludeAppLogs() bool { - if m != nil && m.IncludeAppLogs != nil { - return *m.IncludeAppLogs - } - return false -} - -func (m *LogReadRequest) GetAppLogsPerRequest() int32 { - if m != nil && m.AppLogsPerRequest != nil { - return *m.AppLogsPerRequest - } - return 0 -} - -func (m *LogReadRequest) GetIncludeHost() bool { - if m != nil && m.IncludeHost != nil { - return *m.IncludeHost - } - return false -} - -func (m *LogReadRequest) GetIncludeAll() bool { - if m != nil && m.IncludeAll != nil { - return *m.IncludeAll - } - return false -} - -func (m *LogReadRequest) GetCacheIterator() bool { - if m != nil && m.CacheIterator != nil { - return *m.CacheIterator - } - return false -} - -func (m *LogReadRequest) GetNumShards() int32 { - if m != nil && m.NumShards != nil { - return *m.NumShards - } - return 0 -} - -type LogReadResponse struct { - Log []*RequestLog `protobuf:"bytes,1,rep,name=log" json:"log,omitempty"` - Offset *LogOffset `protobuf:"bytes,2,opt,name=offset" json:"offset,omitempty"` - LastEndTime *int64 `protobuf:"varint,3,opt,name=last_end_time" json:"last_end_time,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogReadResponse) Reset() { *m = LogReadResponse{} } -func (m *LogReadResponse) String() string { return proto.CompactTextString(m) } -func (*LogReadResponse) ProtoMessage() {} - -func (m *LogReadResponse) GetLog() []*RequestLog { - if m != nil { - return m.Log - } - return nil -} - -func (m *LogReadResponse) GetOffset() *LogOffset { - if m != nil { - return m.Offset - } - return nil -} - -func (m *LogReadResponse) GetLastEndTime() int64 { - if m != nil && m.LastEndTime != nil { - return *m.LastEndTime - } - return 0 -} - -type LogUsageRecord struct { - VersionId *string `protobuf:"bytes,1,opt,name=version_id" json:"version_id,omitempty"` - StartTime *int32 `protobuf:"varint,2,opt,name=start_time" json:"start_time,omitempty"` - EndTime *int32 `protobuf:"varint,3,opt,name=end_time" json:"end_time,omitempty"` - Count *int64 `protobuf:"varint,4,opt,name=count" json:"count,omitempty"` - TotalSize *int64 `protobuf:"varint,5,opt,name=total_size" json:"total_size,omitempty"` - Records *int32 `protobuf:"varint,6,opt,name=records" json:"records,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogUsageRecord) Reset() { *m = LogUsageRecord{} } -func (m *LogUsageRecord) String() string { return proto.CompactTextString(m) } -func (*LogUsageRecord) ProtoMessage() {} - -func (m *LogUsageRecord) GetVersionId() string { - if m != nil && m.VersionId != nil { - return *m.VersionId - } - return "" -} - -func (m *LogUsageRecord) GetStartTime() int32 { - if m != nil && m.StartTime != nil { - return *m.StartTime - } - return 0 -} - -func (m *LogUsageRecord) GetEndTime() int32 { - if m != nil && m.EndTime != nil { - return *m.EndTime - } - return 0 -} - -func (m *LogUsageRecord) GetCount() int64 { - if m != nil && m.Count != nil { - return *m.Count - } - return 0 -} - -func (m *LogUsageRecord) GetTotalSize() int64 { - if m != nil && m.TotalSize != nil { - return *m.TotalSize - } - return 0 -} - -func (m *LogUsageRecord) GetRecords() int32 { - if m != nil && m.Records != nil { - return *m.Records - } - return 0 -} - -type LogUsageRequest struct { - AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - VersionId []string `protobuf:"bytes,2,rep,name=version_id" json:"version_id,omitempty"` - StartTime *int32 `protobuf:"varint,3,opt,name=start_time" json:"start_time,omitempty"` - EndTime *int32 `protobuf:"varint,4,opt,name=end_time" json:"end_time,omitempty"` - ResolutionHours *uint32 `protobuf:"varint,5,opt,name=resolution_hours,def=1" json:"resolution_hours,omitempty"` - CombineVersions *bool `protobuf:"varint,6,opt,name=combine_versions" json:"combine_versions,omitempty"` - UsageVersion *int32 `protobuf:"varint,7,opt,name=usage_version" json:"usage_version,omitempty"` - VersionsOnly *bool `protobuf:"varint,8,opt,name=versions_only" json:"versions_only,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogUsageRequest) Reset() { *m = LogUsageRequest{} } -func (m *LogUsageRequest) String() string { return proto.CompactTextString(m) } -func (*LogUsageRequest) ProtoMessage() {} - -const Default_LogUsageRequest_ResolutionHours uint32 = 1 - -func (m *LogUsageRequest) GetAppId() string { - if m != nil && m.AppId != nil { - return *m.AppId - } - return "" -} - -func (m *LogUsageRequest) GetVersionId() []string { - if m != nil { - return m.VersionId - } - return nil -} - -func (m *LogUsageRequest) GetStartTime() int32 { - if m != nil && m.StartTime != nil { - return *m.StartTime - } - return 0 -} - -func (m *LogUsageRequest) GetEndTime() int32 { - if m != nil && m.EndTime != nil { - return *m.EndTime - } - return 0 -} - -func (m *LogUsageRequest) GetResolutionHours() uint32 { - if m != nil && m.ResolutionHours != nil { - return *m.ResolutionHours - } - return Default_LogUsageRequest_ResolutionHours -} - -func (m *LogUsageRequest) GetCombineVersions() bool { - if m != nil && m.CombineVersions != nil { - return *m.CombineVersions - } - return false -} - -func (m *LogUsageRequest) GetUsageVersion() int32 { - if m != nil && m.UsageVersion != nil { - return *m.UsageVersion - } - return 0 -} - -func (m *LogUsageRequest) GetVersionsOnly() bool { - if m != nil && m.VersionsOnly != nil { - return *m.VersionsOnly - } - return false -} - -type LogUsageResponse struct { - Usage []*LogUsageRecord `protobuf:"bytes,1,rep,name=usage" json:"usage,omitempty"` - Summary *LogUsageRecord `protobuf:"bytes,2,opt,name=summary" json:"summary,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *LogUsageResponse) Reset() { *m = LogUsageResponse{} } -func (m *LogUsageResponse) String() string { return proto.CompactTextString(m) } -func (*LogUsageResponse) ProtoMessage() {} - -func (m *LogUsageResponse) GetUsage() []*LogUsageRecord { - if m != nil { - return m.Usage - } - return nil -} - -func (m *LogUsageResponse) GetSummary() *LogUsageRecord { - if m != nil { - return m.Summary - } - return nil -} - -func init() { - proto.RegisterEnum("appengine.LogServiceError_ErrorCode", LogServiceError_ErrorCode_name, LogServiceError_ErrorCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.proto deleted file mode 100644 index 8981dc47577..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/log/log_service.proto +++ /dev/null @@ -1,150 +0,0 @@ -syntax = "proto2"; -option go_package = "log"; - -package appengine; - -message LogServiceError { - enum ErrorCode { - OK = 0; - INVALID_REQUEST = 1; - STORAGE_ERROR = 2; - } -} - -message UserAppLogLine { - required int64 timestamp_usec = 1; - required int64 level = 2; - required string message = 3; -} - -message UserAppLogGroup { - repeated UserAppLogLine log_line = 2; -} - -message FlushRequest { - optional bytes logs = 1; -} - -message SetStatusRequest { - required string status = 1; -} - - -message LogOffset { - optional bytes request_id = 1; -} - -message LogLine { - required int64 time = 1; - required int32 level = 2; - required string log_message = 3; -} - -message RequestLog { - required string app_id = 1; - optional string module_id = 37 [default="default"]; - required string version_id = 2; - required bytes request_id = 3; - optional LogOffset offset = 35; - required string ip = 4; - optional string nickname = 5; - required int64 start_time = 6; - required int64 end_time = 7; - required int64 latency = 8; - required int64 mcycles = 9; - required string method = 10; - required string resource = 11; - required string http_version = 12; - required int32 status = 13; - required int64 response_size = 14; - optional string referrer = 15; - optional string user_agent = 16; - required string url_map_entry = 17; - required string combined = 18; - optional int64 api_mcycles = 19; - optional string host = 20; - optional double cost = 21; - - optional string task_queue_name = 22; - optional string task_name = 23; - - optional bool was_loading_request = 24; - optional int64 pending_time = 25; - optional int32 replica_index = 26 [default = -1]; - optional bool finished = 27 [default = true]; - optional bytes clone_key = 28; - - repeated LogLine line = 29; - - optional bool lines_incomplete = 36; - optional bytes app_engine_release = 38; - - optional int32 exit_reason = 30; - optional bool was_throttled_for_time = 31; - optional bool was_throttled_for_requests = 32; - optional int64 throttled_time = 33; - - optional bytes server_name = 34; -} - -message LogModuleVersion { - optional string module_id = 1 [default="default"]; - optional string version_id = 2; -} - -message LogReadRequest { - required string app_id = 1; - repeated string version_id = 2; - repeated LogModuleVersion module_version = 19; - - optional int64 start_time = 3; - optional int64 end_time = 4; - optional LogOffset offset = 5; - repeated bytes request_id = 6; - - optional int32 minimum_log_level = 7; - optional bool include_incomplete = 8; - optional int64 count = 9; - - optional string combined_log_regex = 14; - optional string host_regex = 15; - optional int32 replica_index = 16; - - optional bool include_app_logs = 10; - optional int32 app_logs_per_request = 17; - optional bool include_host = 11; - optional bool include_all = 12; - optional bool cache_iterator = 13; - optional int32 num_shards = 18; -} - -message LogReadResponse { - repeated RequestLog log = 1; - optional LogOffset offset = 2; - optional int64 last_end_time = 3; -} - -message LogUsageRecord { - optional string version_id = 1; - optional int32 start_time = 2; - optional int32 end_time = 3; - optional int64 count = 4; - optional int64 total_size = 5; - optional int32 records = 6; -} - -message LogUsageRequest { - required string app_id = 1; - repeated string version_id = 2; - optional int32 start_time = 3; - optional int32 end_time = 4; - optional uint32 resolution_hours = 5 [default = 1]; - optional bool combine_versions = 6; - optional int32 usage_version = 7; - optional bool versions_only = 8; -} - -message LogUsageResponse { - repeated LogUsageRecord usage = 1; - optional LogUsageRecord summary = 2; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.pb.go deleted file mode 100644 index dd2b3304058..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.pb.go +++ /dev/null @@ -1,228 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/mail/mail_service.proto -// DO NOT EDIT! - -/* -Package mail is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/mail/mail_service.proto - -It has these top-level messages: - MailServiceError - MailAttachment - MailHeader - MailMessage -*/ -package mail - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type MailServiceError_ErrorCode int32 - -const ( - MailServiceError_OK MailServiceError_ErrorCode = 0 - MailServiceError_INTERNAL_ERROR MailServiceError_ErrorCode = 1 - MailServiceError_BAD_REQUEST MailServiceError_ErrorCode = 2 - MailServiceError_UNAUTHORIZED_SENDER MailServiceError_ErrorCode = 3 - MailServiceError_INVALID_ATTACHMENT_TYPE MailServiceError_ErrorCode = 4 - MailServiceError_INVALID_HEADER_NAME MailServiceError_ErrorCode = 5 - MailServiceError_INVALID_CONTENT_ID MailServiceError_ErrorCode = 6 -) - -var MailServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "INTERNAL_ERROR", - 2: "BAD_REQUEST", - 3: "UNAUTHORIZED_SENDER", - 4: "INVALID_ATTACHMENT_TYPE", - 5: "INVALID_HEADER_NAME", - 6: "INVALID_CONTENT_ID", -} -var MailServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "INTERNAL_ERROR": 1, - "BAD_REQUEST": 2, - "UNAUTHORIZED_SENDER": 3, - "INVALID_ATTACHMENT_TYPE": 4, - "INVALID_HEADER_NAME": 5, - "INVALID_CONTENT_ID": 6, -} - -func (x MailServiceError_ErrorCode) Enum() *MailServiceError_ErrorCode { - p := new(MailServiceError_ErrorCode) - *p = x - return p -} -func (x MailServiceError_ErrorCode) String() string { - return proto.EnumName(MailServiceError_ErrorCode_name, int32(x)) -} -func (x *MailServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MailServiceError_ErrorCode_value, data, "MailServiceError_ErrorCode") - if err != nil { - return err - } - *x = MailServiceError_ErrorCode(value) - return nil -} - -type MailServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *MailServiceError) Reset() { *m = MailServiceError{} } -func (m *MailServiceError) String() string { return proto.CompactTextString(m) } -func (*MailServiceError) ProtoMessage() {} - -type MailAttachment struct { - FileName *string `protobuf:"bytes,1,req" json:"FileName,omitempty"` - Data []byte `protobuf:"bytes,2,req" json:"Data,omitempty"` - ContentID *string `protobuf:"bytes,3,opt" json:"ContentID,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MailAttachment) Reset() { *m = MailAttachment{} } -func (m *MailAttachment) String() string { return proto.CompactTextString(m) } -func (*MailAttachment) ProtoMessage() {} - -func (m *MailAttachment) GetFileName() string { - if m != nil && m.FileName != nil { - return *m.FileName - } - return "" -} - -func (m *MailAttachment) GetData() []byte { - if m != nil { - return m.Data - } - return nil -} - -func (m *MailAttachment) GetContentID() string { - if m != nil && m.ContentID != nil { - return *m.ContentID - } - return "" -} - -type MailHeader struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Value *string `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MailHeader) Reset() { *m = MailHeader{} } -func (m *MailHeader) String() string { return proto.CompactTextString(m) } -func (*MailHeader) ProtoMessage() {} - -func (m *MailHeader) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *MailHeader) GetValue() string { - if m != nil && m.Value != nil { - return *m.Value - } - return "" -} - -type MailMessage struct { - Sender *string `protobuf:"bytes,1,req" json:"Sender,omitempty"` - ReplyTo *string `protobuf:"bytes,2,opt" json:"ReplyTo,omitempty"` - To []string `protobuf:"bytes,3,rep" json:"To,omitempty"` - Cc []string `protobuf:"bytes,4,rep" json:"Cc,omitempty"` - Bcc []string `protobuf:"bytes,5,rep" json:"Bcc,omitempty"` - Subject *string `protobuf:"bytes,6,req" json:"Subject,omitempty"` - TextBody *string `protobuf:"bytes,7,opt" json:"TextBody,omitempty"` - HtmlBody *string `protobuf:"bytes,8,opt" json:"HtmlBody,omitempty"` - Attachment []*MailAttachment `protobuf:"bytes,9,rep" json:"Attachment,omitempty"` - Header []*MailHeader `protobuf:"bytes,10,rep" json:"Header,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MailMessage) Reset() { *m = MailMessage{} } -func (m *MailMessage) String() string { return proto.CompactTextString(m) } -func (*MailMessage) ProtoMessage() {} - -func (m *MailMessage) GetSender() string { - if m != nil && m.Sender != nil { - return *m.Sender - } - return "" -} - -func (m *MailMessage) GetReplyTo() string { - if m != nil && m.ReplyTo != nil { - return *m.ReplyTo - } - return "" -} - -func (m *MailMessage) GetTo() []string { - if m != nil { - return m.To - } - return nil -} - -func (m *MailMessage) GetCc() []string { - if m != nil { - return m.Cc - } - return nil -} - -func (m *MailMessage) GetBcc() []string { - if m != nil { - return m.Bcc - } - return nil -} - -func (m *MailMessage) GetSubject() string { - if m != nil && m.Subject != nil { - return *m.Subject - } - return "" -} - -func (m *MailMessage) GetTextBody() string { - if m != nil && m.TextBody != nil { - return *m.TextBody - } - return "" -} - -func (m *MailMessage) GetHtmlBody() string { - if m != nil && m.HtmlBody != nil { - return *m.HtmlBody - } - return "" -} - -func (m *MailMessage) GetAttachment() []*MailAttachment { - if m != nil { - return m.Attachment - } - return nil -} - -func (m *MailMessage) GetHeader() []*MailHeader { - if m != nil { - return m.Header - } - return nil -} - -func init() { - proto.RegisterEnum("appengine.MailServiceError_ErrorCode", MailServiceError_ErrorCode_name, MailServiceError_ErrorCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.proto deleted file mode 100644 index 4e57b7aa51a..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/mail/mail_service.proto +++ /dev/null @@ -1,45 +0,0 @@ -syntax = "proto2"; -option go_package = "mail"; - -package appengine; - -message MailServiceError { - enum ErrorCode { - OK = 0; - INTERNAL_ERROR = 1; - BAD_REQUEST = 2; - UNAUTHORIZED_SENDER = 3; - INVALID_ATTACHMENT_TYPE = 4; - INVALID_HEADER_NAME = 5; - INVALID_CONTENT_ID = 6; - } -} - -message MailAttachment { - required string FileName = 1; - required bytes Data = 2; - optional string ContentID = 3; -} - -message MailHeader { - required string name = 1; - required string value = 2; -} - -message MailMessage { - required string Sender = 1; - optional string ReplyTo = 2; - - repeated string To = 3; - repeated string Cc = 4; - repeated string Bcc = 5; - - required string Subject = 6; - - optional string TextBody = 7; - optional string HtmlBody = 8; - - repeated MailAttachment Attachment = 9; - - repeated MailHeader Header = 10; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.pb.go deleted file mode 100644 index 301755e4e92..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.pb.go +++ /dev/null @@ -1,942 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/memcache/memcache_service.proto -// DO NOT EDIT! - -/* -Package memcache is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/memcache/memcache_service.proto - -It has these top-level messages: - MemcacheServiceError - AppOverride - MemcacheGetRequest - MemcacheGetResponse - MemcacheSetRequest - MemcacheSetResponse - MemcacheDeleteRequest - MemcacheDeleteResponse - MemcacheIncrementRequest - MemcacheIncrementResponse - MemcacheBatchIncrementRequest - MemcacheBatchIncrementResponse - MemcacheFlushRequest - MemcacheFlushResponse - MemcacheStatsRequest - MergedNamespaceStats - MemcacheStatsResponse - MemcacheGrabTailRequest - MemcacheGrabTailResponse -*/ -package memcache - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type MemcacheServiceError_ErrorCode int32 - -const ( - MemcacheServiceError_OK MemcacheServiceError_ErrorCode = 0 - MemcacheServiceError_UNSPECIFIED_ERROR MemcacheServiceError_ErrorCode = 1 - MemcacheServiceError_NAMESPACE_NOT_SET MemcacheServiceError_ErrorCode = 2 - MemcacheServiceError_PERMISSION_DENIED MemcacheServiceError_ErrorCode = 3 - MemcacheServiceError_INVALID_VALUE MemcacheServiceError_ErrorCode = 6 -) - -var MemcacheServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "UNSPECIFIED_ERROR", - 2: "NAMESPACE_NOT_SET", - 3: "PERMISSION_DENIED", - 6: "INVALID_VALUE", -} -var MemcacheServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "UNSPECIFIED_ERROR": 1, - "NAMESPACE_NOT_SET": 2, - "PERMISSION_DENIED": 3, - "INVALID_VALUE": 6, -} - -func (x MemcacheServiceError_ErrorCode) Enum() *MemcacheServiceError_ErrorCode { - p := new(MemcacheServiceError_ErrorCode) - *p = x - return p -} -func (x MemcacheServiceError_ErrorCode) String() string { - return proto.EnumName(MemcacheServiceError_ErrorCode_name, int32(x)) -} -func (x *MemcacheServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheServiceError_ErrorCode_value, data, "MemcacheServiceError_ErrorCode") - if err != nil { - return err - } - *x = MemcacheServiceError_ErrorCode(value) - return nil -} - -type MemcacheSetRequest_SetPolicy int32 - -const ( - MemcacheSetRequest_SET MemcacheSetRequest_SetPolicy = 1 - MemcacheSetRequest_ADD MemcacheSetRequest_SetPolicy = 2 - MemcacheSetRequest_REPLACE MemcacheSetRequest_SetPolicy = 3 - MemcacheSetRequest_CAS MemcacheSetRequest_SetPolicy = 4 -) - -var MemcacheSetRequest_SetPolicy_name = map[int32]string{ - 1: "SET", - 2: "ADD", - 3: "REPLACE", - 4: "CAS", -} -var MemcacheSetRequest_SetPolicy_value = map[string]int32{ - "SET": 1, - "ADD": 2, - "REPLACE": 3, - "CAS": 4, -} - -func (x MemcacheSetRequest_SetPolicy) Enum() *MemcacheSetRequest_SetPolicy { - p := new(MemcacheSetRequest_SetPolicy) - *p = x - return p -} -func (x MemcacheSetRequest_SetPolicy) String() string { - return proto.EnumName(MemcacheSetRequest_SetPolicy_name, int32(x)) -} -func (x *MemcacheSetRequest_SetPolicy) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheSetRequest_SetPolicy_value, data, "MemcacheSetRequest_SetPolicy") - if err != nil { - return err - } - *x = MemcacheSetRequest_SetPolicy(value) - return nil -} - -type MemcacheSetResponse_SetStatusCode int32 - -const ( - MemcacheSetResponse_STORED MemcacheSetResponse_SetStatusCode = 1 - MemcacheSetResponse_NOT_STORED MemcacheSetResponse_SetStatusCode = 2 - MemcacheSetResponse_ERROR MemcacheSetResponse_SetStatusCode = 3 - MemcacheSetResponse_EXISTS MemcacheSetResponse_SetStatusCode = 4 -) - -var MemcacheSetResponse_SetStatusCode_name = map[int32]string{ - 1: "STORED", - 2: "NOT_STORED", - 3: "ERROR", - 4: "EXISTS", -} -var MemcacheSetResponse_SetStatusCode_value = map[string]int32{ - "STORED": 1, - "NOT_STORED": 2, - "ERROR": 3, - "EXISTS": 4, -} - -func (x MemcacheSetResponse_SetStatusCode) Enum() *MemcacheSetResponse_SetStatusCode { - p := new(MemcacheSetResponse_SetStatusCode) - *p = x - return p -} -func (x MemcacheSetResponse_SetStatusCode) String() string { - return proto.EnumName(MemcacheSetResponse_SetStatusCode_name, int32(x)) -} -func (x *MemcacheSetResponse_SetStatusCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheSetResponse_SetStatusCode_value, data, "MemcacheSetResponse_SetStatusCode") - if err != nil { - return err - } - *x = MemcacheSetResponse_SetStatusCode(value) - return nil -} - -type MemcacheDeleteResponse_DeleteStatusCode int32 - -const ( - MemcacheDeleteResponse_DELETED MemcacheDeleteResponse_DeleteStatusCode = 1 - MemcacheDeleteResponse_NOT_FOUND MemcacheDeleteResponse_DeleteStatusCode = 2 -) - -var MemcacheDeleteResponse_DeleteStatusCode_name = map[int32]string{ - 1: "DELETED", - 2: "NOT_FOUND", -} -var MemcacheDeleteResponse_DeleteStatusCode_value = map[string]int32{ - "DELETED": 1, - "NOT_FOUND": 2, -} - -func (x MemcacheDeleteResponse_DeleteStatusCode) Enum() *MemcacheDeleteResponse_DeleteStatusCode { - p := new(MemcacheDeleteResponse_DeleteStatusCode) - *p = x - return p -} -func (x MemcacheDeleteResponse_DeleteStatusCode) String() string { - return proto.EnumName(MemcacheDeleteResponse_DeleteStatusCode_name, int32(x)) -} -func (x *MemcacheDeleteResponse_DeleteStatusCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheDeleteResponse_DeleteStatusCode_value, data, "MemcacheDeleteResponse_DeleteStatusCode") - if err != nil { - return err - } - *x = MemcacheDeleteResponse_DeleteStatusCode(value) - return nil -} - -type MemcacheIncrementRequest_Direction int32 - -const ( - MemcacheIncrementRequest_INCREMENT MemcacheIncrementRequest_Direction = 1 - MemcacheIncrementRequest_DECREMENT MemcacheIncrementRequest_Direction = 2 -) - -var MemcacheIncrementRequest_Direction_name = map[int32]string{ - 1: "INCREMENT", - 2: "DECREMENT", -} -var MemcacheIncrementRequest_Direction_value = map[string]int32{ - "INCREMENT": 1, - "DECREMENT": 2, -} - -func (x MemcacheIncrementRequest_Direction) Enum() *MemcacheIncrementRequest_Direction { - p := new(MemcacheIncrementRequest_Direction) - *p = x - return p -} -func (x MemcacheIncrementRequest_Direction) String() string { - return proto.EnumName(MemcacheIncrementRequest_Direction_name, int32(x)) -} -func (x *MemcacheIncrementRequest_Direction) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheIncrementRequest_Direction_value, data, "MemcacheIncrementRequest_Direction") - if err != nil { - return err - } - *x = MemcacheIncrementRequest_Direction(value) - return nil -} - -type MemcacheIncrementResponse_IncrementStatusCode int32 - -const ( - MemcacheIncrementResponse_OK MemcacheIncrementResponse_IncrementStatusCode = 1 - MemcacheIncrementResponse_NOT_CHANGED MemcacheIncrementResponse_IncrementStatusCode = 2 - MemcacheIncrementResponse_ERROR MemcacheIncrementResponse_IncrementStatusCode = 3 -) - -var MemcacheIncrementResponse_IncrementStatusCode_name = map[int32]string{ - 1: "OK", - 2: "NOT_CHANGED", - 3: "ERROR", -} -var MemcacheIncrementResponse_IncrementStatusCode_value = map[string]int32{ - "OK": 1, - "NOT_CHANGED": 2, - "ERROR": 3, -} - -func (x MemcacheIncrementResponse_IncrementStatusCode) Enum() *MemcacheIncrementResponse_IncrementStatusCode { - p := new(MemcacheIncrementResponse_IncrementStatusCode) - *p = x - return p -} -func (x MemcacheIncrementResponse_IncrementStatusCode) String() string { - return proto.EnumName(MemcacheIncrementResponse_IncrementStatusCode_name, int32(x)) -} -func (x *MemcacheIncrementResponse_IncrementStatusCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(MemcacheIncrementResponse_IncrementStatusCode_value, data, "MemcacheIncrementResponse_IncrementStatusCode") - if err != nil { - return err - } - *x = MemcacheIncrementResponse_IncrementStatusCode(value) - return nil -} - -type MemcacheServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheServiceError) Reset() { *m = MemcacheServiceError{} } -func (m *MemcacheServiceError) String() string { return proto.CompactTextString(m) } -func (*MemcacheServiceError) ProtoMessage() {} - -type AppOverride struct { - AppId *string `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - NumMemcachegBackends *int32 `protobuf:"varint,2,opt,name=num_memcacheg_backends" json:"num_memcacheg_backends,omitempty"` - IgnoreShardlock *bool `protobuf:"varint,3,opt,name=ignore_shardlock" json:"ignore_shardlock,omitempty"` - MemcachePoolHint *string `protobuf:"bytes,4,opt,name=memcache_pool_hint" json:"memcache_pool_hint,omitempty"` - MemcacheShardingStrategy []byte `protobuf:"bytes,5,opt,name=memcache_sharding_strategy" json:"memcache_sharding_strategy,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *AppOverride) Reset() { *m = AppOverride{} } -func (m *AppOverride) String() string { return proto.CompactTextString(m) } -func (*AppOverride) ProtoMessage() {} - -func (m *AppOverride) GetAppId() string { - if m != nil && m.AppId != nil { - return *m.AppId - } - return "" -} - -func (m *AppOverride) GetNumMemcachegBackends() int32 { - if m != nil && m.NumMemcachegBackends != nil { - return *m.NumMemcachegBackends - } - return 0 -} - -func (m *AppOverride) GetIgnoreShardlock() bool { - if m != nil && m.IgnoreShardlock != nil { - return *m.IgnoreShardlock - } - return false -} - -func (m *AppOverride) GetMemcachePoolHint() string { - if m != nil && m.MemcachePoolHint != nil { - return *m.MemcachePoolHint - } - return "" -} - -func (m *AppOverride) GetMemcacheShardingStrategy() []byte { - if m != nil { - return m.MemcacheShardingStrategy - } - return nil -} - -type MemcacheGetRequest struct { - Key [][]byte `protobuf:"bytes,1,rep,name=key" json:"key,omitempty"` - NameSpace *string `protobuf:"bytes,2,opt,name=name_space,def=" json:"name_space,omitempty"` - ForCas *bool `protobuf:"varint,4,opt,name=for_cas" json:"for_cas,omitempty"` - Override *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheGetRequest) Reset() { *m = MemcacheGetRequest{} } -func (m *MemcacheGetRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheGetRequest) ProtoMessage() {} - -func (m *MemcacheGetRequest) GetKey() [][]byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *MemcacheGetRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *MemcacheGetRequest) GetForCas() bool { - if m != nil && m.ForCas != nil { - return *m.ForCas - } - return false -} - -func (m *MemcacheGetRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MemcacheGetResponse struct { - Item []*MemcacheGetResponse_Item `protobuf:"group,1,rep" json:"item,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheGetResponse) Reset() { *m = MemcacheGetResponse{} } -func (m *MemcacheGetResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheGetResponse) ProtoMessage() {} - -func (m *MemcacheGetResponse) GetItem() []*MemcacheGetResponse_Item { - if m != nil { - return m.Item - } - return nil -} - -type MemcacheGetResponse_Item struct { - Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` - Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` - CasId *uint64 `protobuf:"fixed64,5,opt,name=cas_id" json:"cas_id,omitempty"` - ExpiresInSeconds *int32 `protobuf:"varint,6,opt,name=expires_in_seconds" json:"expires_in_seconds,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheGetResponse_Item) Reset() { *m = MemcacheGetResponse_Item{} } -func (m *MemcacheGetResponse_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheGetResponse_Item) ProtoMessage() {} - -func (m *MemcacheGetResponse_Item) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *MemcacheGetResponse_Item) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *MemcacheGetResponse_Item) GetFlags() uint32 { - if m != nil && m.Flags != nil { - return *m.Flags - } - return 0 -} - -func (m *MemcacheGetResponse_Item) GetCasId() uint64 { - if m != nil && m.CasId != nil { - return *m.CasId - } - return 0 -} - -func (m *MemcacheGetResponse_Item) GetExpiresInSeconds() int32 { - if m != nil && m.ExpiresInSeconds != nil { - return *m.ExpiresInSeconds - } - return 0 -} - -type MemcacheSetRequest struct { - Item []*MemcacheSetRequest_Item `protobuf:"group,1,rep" json:"item,omitempty"` - NameSpace *string `protobuf:"bytes,7,opt,name=name_space,def=" json:"name_space,omitempty"` - Override *AppOverride `protobuf:"bytes,10,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheSetRequest) Reset() { *m = MemcacheSetRequest{} } -func (m *MemcacheSetRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheSetRequest) ProtoMessage() {} - -func (m *MemcacheSetRequest) GetItem() []*MemcacheSetRequest_Item { - if m != nil { - return m.Item - } - return nil -} - -func (m *MemcacheSetRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *MemcacheSetRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MemcacheSetRequest_Item struct { - Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,3,req,name=value" json:"value,omitempty"` - Flags *uint32 `protobuf:"fixed32,4,opt,name=flags" json:"flags,omitempty"` - SetPolicy *MemcacheSetRequest_SetPolicy `protobuf:"varint,5,opt,name=set_policy,enum=appengine.MemcacheSetRequest_SetPolicy,def=1" json:"set_policy,omitempty"` - ExpirationTime *uint32 `protobuf:"fixed32,6,opt,name=expiration_time,def=0" json:"expiration_time,omitempty"` - CasId *uint64 `protobuf:"fixed64,8,opt,name=cas_id" json:"cas_id,omitempty"` - ForCas *bool `protobuf:"varint,9,opt,name=for_cas" json:"for_cas,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheSetRequest_Item) Reset() { *m = MemcacheSetRequest_Item{} } -func (m *MemcacheSetRequest_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheSetRequest_Item) ProtoMessage() {} - -const Default_MemcacheSetRequest_Item_SetPolicy MemcacheSetRequest_SetPolicy = MemcacheSetRequest_SET -const Default_MemcacheSetRequest_Item_ExpirationTime uint32 = 0 - -func (m *MemcacheSetRequest_Item) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *MemcacheSetRequest_Item) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *MemcacheSetRequest_Item) GetFlags() uint32 { - if m != nil && m.Flags != nil { - return *m.Flags - } - return 0 -} - -func (m *MemcacheSetRequest_Item) GetSetPolicy() MemcacheSetRequest_SetPolicy { - if m != nil && m.SetPolicy != nil { - return *m.SetPolicy - } - return Default_MemcacheSetRequest_Item_SetPolicy -} - -func (m *MemcacheSetRequest_Item) GetExpirationTime() uint32 { - if m != nil && m.ExpirationTime != nil { - return *m.ExpirationTime - } - return Default_MemcacheSetRequest_Item_ExpirationTime -} - -func (m *MemcacheSetRequest_Item) GetCasId() uint64 { - if m != nil && m.CasId != nil { - return *m.CasId - } - return 0 -} - -func (m *MemcacheSetRequest_Item) GetForCas() bool { - if m != nil && m.ForCas != nil { - return *m.ForCas - } - return false -} - -type MemcacheSetResponse struct { - SetStatus []MemcacheSetResponse_SetStatusCode `protobuf:"varint,1,rep,name=set_status,enum=appengine.MemcacheSetResponse_SetStatusCode" json:"set_status,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheSetResponse) Reset() { *m = MemcacheSetResponse{} } -func (m *MemcacheSetResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheSetResponse) ProtoMessage() {} - -func (m *MemcacheSetResponse) GetSetStatus() []MemcacheSetResponse_SetStatusCode { - if m != nil { - return m.SetStatus - } - return nil -} - -type MemcacheDeleteRequest struct { - Item []*MemcacheDeleteRequest_Item `protobuf:"group,1,rep" json:"item,omitempty"` - NameSpace *string `protobuf:"bytes,4,opt,name=name_space,def=" json:"name_space,omitempty"` - Override *AppOverride `protobuf:"bytes,5,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheDeleteRequest) Reset() { *m = MemcacheDeleteRequest{} } -func (m *MemcacheDeleteRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheDeleteRequest) ProtoMessage() {} - -func (m *MemcacheDeleteRequest) GetItem() []*MemcacheDeleteRequest_Item { - if m != nil { - return m.Item - } - return nil -} - -func (m *MemcacheDeleteRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *MemcacheDeleteRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MemcacheDeleteRequest_Item struct { - Key []byte `protobuf:"bytes,2,req,name=key" json:"key,omitempty"` - DeleteTime *uint32 `protobuf:"fixed32,3,opt,name=delete_time,def=0" json:"delete_time,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheDeleteRequest_Item) Reset() { *m = MemcacheDeleteRequest_Item{} } -func (m *MemcacheDeleteRequest_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheDeleteRequest_Item) ProtoMessage() {} - -const Default_MemcacheDeleteRequest_Item_DeleteTime uint32 = 0 - -func (m *MemcacheDeleteRequest_Item) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *MemcacheDeleteRequest_Item) GetDeleteTime() uint32 { - if m != nil && m.DeleteTime != nil { - return *m.DeleteTime - } - return Default_MemcacheDeleteRequest_Item_DeleteTime -} - -type MemcacheDeleteResponse struct { - DeleteStatus []MemcacheDeleteResponse_DeleteStatusCode `protobuf:"varint,1,rep,name=delete_status,enum=appengine.MemcacheDeleteResponse_DeleteStatusCode" json:"delete_status,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheDeleteResponse) Reset() { *m = MemcacheDeleteResponse{} } -func (m *MemcacheDeleteResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheDeleteResponse) ProtoMessage() {} - -func (m *MemcacheDeleteResponse) GetDeleteStatus() []MemcacheDeleteResponse_DeleteStatusCode { - if m != nil { - return m.DeleteStatus - } - return nil -} - -type MemcacheIncrementRequest struct { - Key []byte `protobuf:"bytes,1,req,name=key" json:"key,omitempty"` - NameSpace *string `protobuf:"bytes,4,opt,name=name_space,def=" json:"name_space,omitempty"` - Delta *uint64 `protobuf:"varint,2,opt,name=delta,def=1" json:"delta,omitempty"` - Direction *MemcacheIncrementRequest_Direction `protobuf:"varint,3,opt,name=direction,enum=appengine.MemcacheIncrementRequest_Direction,def=1" json:"direction,omitempty"` - InitialValue *uint64 `protobuf:"varint,5,opt,name=initial_value" json:"initial_value,omitempty"` - InitialFlags *uint32 `protobuf:"fixed32,6,opt,name=initial_flags" json:"initial_flags,omitempty"` - Override *AppOverride `protobuf:"bytes,7,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheIncrementRequest) Reset() { *m = MemcacheIncrementRequest{} } -func (m *MemcacheIncrementRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheIncrementRequest) ProtoMessage() {} - -const Default_MemcacheIncrementRequest_Delta uint64 = 1 -const Default_MemcacheIncrementRequest_Direction MemcacheIncrementRequest_Direction = MemcacheIncrementRequest_INCREMENT - -func (m *MemcacheIncrementRequest) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *MemcacheIncrementRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *MemcacheIncrementRequest) GetDelta() uint64 { - if m != nil && m.Delta != nil { - return *m.Delta - } - return Default_MemcacheIncrementRequest_Delta -} - -func (m *MemcacheIncrementRequest) GetDirection() MemcacheIncrementRequest_Direction { - if m != nil && m.Direction != nil { - return *m.Direction - } - return Default_MemcacheIncrementRequest_Direction -} - -func (m *MemcacheIncrementRequest) GetInitialValue() uint64 { - if m != nil && m.InitialValue != nil { - return *m.InitialValue - } - return 0 -} - -func (m *MemcacheIncrementRequest) GetInitialFlags() uint32 { - if m != nil && m.InitialFlags != nil { - return *m.InitialFlags - } - return 0 -} - -func (m *MemcacheIncrementRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MemcacheIncrementResponse struct { - NewValue *uint64 `protobuf:"varint,1,opt,name=new_value" json:"new_value,omitempty"` - IncrementStatus *MemcacheIncrementResponse_IncrementStatusCode `protobuf:"varint,2,opt,name=increment_status,enum=appengine.MemcacheIncrementResponse_IncrementStatusCode" json:"increment_status,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheIncrementResponse) Reset() { *m = MemcacheIncrementResponse{} } -func (m *MemcacheIncrementResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheIncrementResponse) ProtoMessage() {} - -func (m *MemcacheIncrementResponse) GetNewValue() uint64 { - if m != nil && m.NewValue != nil { - return *m.NewValue - } - return 0 -} - -func (m *MemcacheIncrementResponse) GetIncrementStatus() MemcacheIncrementResponse_IncrementStatusCode { - if m != nil && m.IncrementStatus != nil { - return *m.IncrementStatus - } - return MemcacheIncrementResponse_OK -} - -type MemcacheBatchIncrementRequest struct { - NameSpace *string `protobuf:"bytes,1,opt,name=name_space,def=" json:"name_space,omitempty"` - Item []*MemcacheIncrementRequest `protobuf:"bytes,2,rep,name=item" json:"item,omitempty"` - Override *AppOverride `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheBatchIncrementRequest) Reset() { *m = MemcacheBatchIncrementRequest{} } -func (m *MemcacheBatchIncrementRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheBatchIncrementRequest) ProtoMessage() {} - -func (m *MemcacheBatchIncrementRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *MemcacheBatchIncrementRequest) GetItem() []*MemcacheIncrementRequest { - if m != nil { - return m.Item - } - return nil -} - -func (m *MemcacheBatchIncrementRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MemcacheBatchIncrementResponse struct { - Item []*MemcacheIncrementResponse `protobuf:"bytes,1,rep,name=item" json:"item,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheBatchIncrementResponse) Reset() { *m = MemcacheBatchIncrementResponse{} } -func (m *MemcacheBatchIncrementResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheBatchIncrementResponse) ProtoMessage() {} - -func (m *MemcacheBatchIncrementResponse) GetItem() []*MemcacheIncrementResponse { - if m != nil { - return m.Item - } - return nil -} - -type MemcacheFlushRequest struct { - Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheFlushRequest) Reset() { *m = MemcacheFlushRequest{} } -func (m *MemcacheFlushRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheFlushRequest) ProtoMessage() {} - -func (m *MemcacheFlushRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MemcacheFlushResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheFlushResponse) Reset() { *m = MemcacheFlushResponse{} } -func (m *MemcacheFlushResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheFlushResponse) ProtoMessage() {} - -type MemcacheStatsRequest struct { - Override *AppOverride `protobuf:"bytes,1,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheStatsRequest) Reset() { *m = MemcacheStatsRequest{} } -func (m *MemcacheStatsRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheStatsRequest) ProtoMessage() {} - -func (m *MemcacheStatsRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MergedNamespaceStats struct { - Hits *uint64 `protobuf:"varint,1,req,name=hits" json:"hits,omitempty"` - Misses *uint64 `protobuf:"varint,2,req,name=misses" json:"misses,omitempty"` - ByteHits *uint64 `protobuf:"varint,3,req,name=byte_hits" json:"byte_hits,omitempty"` - Items *uint64 `protobuf:"varint,4,req,name=items" json:"items,omitempty"` - Bytes *uint64 `protobuf:"varint,5,req,name=bytes" json:"bytes,omitempty"` - OldestItemAge *uint32 `protobuf:"fixed32,6,req,name=oldest_item_age" json:"oldest_item_age,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MergedNamespaceStats) Reset() { *m = MergedNamespaceStats{} } -func (m *MergedNamespaceStats) String() string { return proto.CompactTextString(m) } -func (*MergedNamespaceStats) ProtoMessage() {} - -func (m *MergedNamespaceStats) GetHits() uint64 { - if m != nil && m.Hits != nil { - return *m.Hits - } - return 0 -} - -func (m *MergedNamespaceStats) GetMisses() uint64 { - if m != nil && m.Misses != nil { - return *m.Misses - } - return 0 -} - -func (m *MergedNamespaceStats) GetByteHits() uint64 { - if m != nil && m.ByteHits != nil { - return *m.ByteHits - } - return 0 -} - -func (m *MergedNamespaceStats) GetItems() uint64 { - if m != nil && m.Items != nil { - return *m.Items - } - return 0 -} - -func (m *MergedNamespaceStats) GetBytes() uint64 { - if m != nil && m.Bytes != nil { - return *m.Bytes - } - return 0 -} - -func (m *MergedNamespaceStats) GetOldestItemAge() uint32 { - if m != nil && m.OldestItemAge != nil { - return *m.OldestItemAge - } - return 0 -} - -type MemcacheStatsResponse struct { - Stats *MergedNamespaceStats `protobuf:"bytes,1,opt,name=stats" json:"stats,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheStatsResponse) Reset() { *m = MemcacheStatsResponse{} } -func (m *MemcacheStatsResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheStatsResponse) ProtoMessage() {} - -func (m *MemcacheStatsResponse) GetStats() *MergedNamespaceStats { - if m != nil { - return m.Stats - } - return nil -} - -type MemcacheGrabTailRequest struct { - ItemCount *int32 `protobuf:"varint,1,req,name=item_count" json:"item_count,omitempty"` - NameSpace *string `protobuf:"bytes,2,opt,name=name_space,def=" json:"name_space,omitempty"` - Override *AppOverride `protobuf:"bytes,3,opt,name=override" json:"override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheGrabTailRequest) Reset() { *m = MemcacheGrabTailRequest{} } -func (m *MemcacheGrabTailRequest) String() string { return proto.CompactTextString(m) } -func (*MemcacheGrabTailRequest) ProtoMessage() {} - -func (m *MemcacheGrabTailRequest) GetItemCount() int32 { - if m != nil && m.ItemCount != nil { - return *m.ItemCount - } - return 0 -} - -func (m *MemcacheGrabTailRequest) GetNameSpace() string { - if m != nil && m.NameSpace != nil { - return *m.NameSpace - } - return "" -} - -func (m *MemcacheGrabTailRequest) GetOverride() *AppOverride { - if m != nil { - return m.Override - } - return nil -} - -type MemcacheGrabTailResponse struct { - Item []*MemcacheGrabTailResponse_Item `protobuf:"group,1,rep" json:"item,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheGrabTailResponse) Reset() { *m = MemcacheGrabTailResponse{} } -func (m *MemcacheGrabTailResponse) String() string { return proto.CompactTextString(m) } -func (*MemcacheGrabTailResponse) ProtoMessage() {} - -func (m *MemcacheGrabTailResponse) GetItem() []*MemcacheGrabTailResponse_Item { - if m != nil { - return m.Item - } - return nil -} - -type MemcacheGrabTailResponse_Item struct { - Value []byte `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` - Flags *uint32 `protobuf:"fixed32,3,opt,name=flags" json:"flags,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *MemcacheGrabTailResponse_Item) Reset() { *m = MemcacheGrabTailResponse_Item{} } -func (m *MemcacheGrabTailResponse_Item) String() string { return proto.CompactTextString(m) } -func (*MemcacheGrabTailResponse_Item) ProtoMessage() {} - -func (m *MemcacheGrabTailResponse_Item) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -func (m *MemcacheGrabTailResponse_Item) GetFlags() uint32 { - if m != nil && m.Flags != nil { - return *m.Flags - } - return 0 -} - -func init() { - proto.RegisterEnum("appengine.MemcacheServiceError_ErrorCode", MemcacheServiceError_ErrorCode_name, MemcacheServiceError_ErrorCode_value) - proto.RegisterEnum("appengine.MemcacheSetRequest_SetPolicy", MemcacheSetRequest_SetPolicy_name, MemcacheSetRequest_SetPolicy_value) - proto.RegisterEnum("appengine.MemcacheSetResponse_SetStatusCode", MemcacheSetResponse_SetStatusCode_name, MemcacheSetResponse_SetStatusCode_value) - proto.RegisterEnum("appengine.MemcacheDeleteResponse_DeleteStatusCode", MemcacheDeleteResponse_DeleteStatusCode_name, MemcacheDeleteResponse_DeleteStatusCode_value) - proto.RegisterEnum("appengine.MemcacheIncrementRequest_Direction", MemcacheIncrementRequest_Direction_name, MemcacheIncrementRequest_Direction_value) - proto.RegisterEnum("appengine.MemcacheIncrementResponse_IncrementStatusCode", MemcacheIncrementResponse_IncrementStatusCode_name, MemcacheIncrementResponse_IncrementStatusCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.proto deleted file mode 100644 index 5f0edcdc7be..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/memcache/memcache_service.proto +++ /dev/null @@ -1,165 +0,0 @@ -syntax = "proto2"; -option go_package = "memcache"; - -package appengine; - -message MemcacheServiceError { - enum ErrorCode { - OK = 0; - UNSPECIFIED_ERROR = 1; - NAMESPACE_NOT_SET = 2; - PERMISSION_DENIED = 3; - INVALID_VALUE = 6; - } -} - -message AppOverride { - required string app_id = 1; - - optional int32 num_memcacheg_backends = 2 [deprecated=true]; - optional bool ignore_shardlock = 3 [deprecated=true]; - optional string memcache_pool_hint = 4 [deprecated=true]; - optional bytes memcache_sharding_strategy = 5 [deprecated=true]; -} - -message MemcacheGetRequest { - repeated bytes key = 1; - optional string name_space = 2 [default = ""]; - optional bool for_cas = 4; - optional AppOverride override = 5; -} - -message MemcacheGetResponse { - repeated group Item = 1 { - required bytes key = 2; - required bytes value = 3; - optional fixed32 flags = 4; - optional fixed64 cas_id = 5; - optional int32 expires_in_seconds = 6; - } -} - -message MemcacheSetRequest { - enum SetPolicy { - SET = 1; - ADD = 2; - REPLACE = 3; - CAS = 4; - } - repeated group Item = 1 { - required bytes key = 2; - required bytes value = 3; - - optional fixed32 flags = 4; - optional SetPolicy set_policy = 5 [default = SET]; - optional fixed32 expiration_time = 6 [default = 0]; - - optional fixed64 cas_id = 8; - optional bool for_cas = 9; - } - optional string name_space = 7 [default = ""]; - optional AppOverride override = 10; -} - -message MemcacheSetResponse { - enum SetStatusCode { - STORED = 1; - NOT_STORED = 2; - ERROR = 3; - EXISTS = 4; - } - repeated SetStatusCode set_status = 1; -} - -message MemcacheDeleteRequest { - repeated group Item = 1 { - required bytes key = 2; - optional fixed32 delete_time = 3 [default = 0]; - } - optional string name_space = 4 [default = ""]; - optional AppOverride override = 5; -} - -message MemcacheDeleteResponse { - enum DeleteStatusCode { - DELETED = 1; - NOT_FOUND = 2; - } - repeated DeleteStatusCode delete_status = 1; -} - -message MemcacheIncrementRequest { - enum Direction { - INCREMENT = 1; - DECREMENT = 2; - } - required bytes key = 1; - optional string name_space = 4 [default = ""]; - - optional uint64 delta = 2 [default = 1]; - optional Direction direction = 3 [default = INCREMENT]; - - optional uint64 initial_value = 5; - optional fixed32 initial_flags = 6; - optional AppOverride override = 7; -} - -message MemcacheIncrementResponse { - enum IncrementStatusCode { - OK = 1; - NOT_CHANGED = 2; - ERROR = 3; - } - - optional uint64 new_value = 1; - optional IncrementStatusCode increment_status = 2; -} - -message MemcacheBatchIncrementRequest { - optional string name_space = 1 [default = ""]; - repeated MemcacheIncrementRequest item = 2; - optional AppOverride override = 3; -} - -message MemcacheBatchIncrementResponse { - repeated MemcacheIncrementResponse item = 1; -} - -message MemcacheFlushRequest { - optional AppOverride override = 1; -} - -message MemcacheFlushResponse { -} - -message MemcacheStatsRequest { - optional AppOverride override = 1; -} - -message MergedNamespaceStats { - required uint64 hits = 1; - required uint64 misses = 2; - required uint64 byte_hits = 3; - - required uint64 items = 4; - required uint64 bytes = 5; - - required fixed32 oldest_item_age = 6; -} - -message MemcacheStatsResponse { - optional MergedNamespaceStats stats = 1; -} - -message MemcacheGrabTailRequest { - required int32 item_count = 1; - optional string name_space = 2 [default = ""]; - optional AppOverride override = 3; -} - -message MemcacheGrabTailResponse { - repeated group Item = 1 { - required bytes value = 2; - optional fixed32 flags = 3; - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/metadata.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/metadata.go deleted file mode 100644 index b68fb753678..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/metadata.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -// This file has code for accessing metadata. -// -// References: -// https://cloud.google.com/compute/docs/metadata - -import ( - "fmt" - "io/ioutil" - "log" - "net/http" - "net/url" -) - -const ( - metadataHost = "metadata" - metadataPath = "/computeMetadata/v1/" -) - -var ( - metadataRequestHeaders = http.Header{ - "X-Google-Metadata-Request": []string{"True"}, - } -) - -// TODO(dsymonds): Do we need to support default values, like Python? -func mustGetMetadata(key string) []byte { - b, err := getMetadata(key) - if err != nil { - log.Fatalf("Metadata fetch failed: %v", err) - } - return b -} - -func getMetadata(key string) ([]byte, error) { - // TODO(dsymonds): May need to use url.Parse to support keys with query args. - req := &http.Request{ - Method: "GET", - URL: &url.URL{ - Scheme: "http", - Host: metadataHost, - Path: metadataPath + key, - }, - Header: metadataRequestHeaders, - Host: metadataHost, - } - resp, err := http.DefaultClient.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - if resp.StatusCode != 200 { - return nil, fmt.Errorf("metadata server returned HTTP %d", resp.StatusCode) - } - return ioutil.ReadAll(resp.Body) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.pb.go deleted file mode 100644 index 043b3faf00c..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.pb.go +++ /dev/null @@ -1,374 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/modules/modules_service.proto -// DO NOT EDIT! - -/* -Package modules is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/modules/modules_service.proto - -It has these top-level messages: - ModulesServiceError - GetModulesRequest - GetModulesResponse - GetVersionsRequest - GetVersionsResponse - GetDefaultVersionRequest - GetDefaultVersionResponse - GetNumInstancesRequest - GetNumInstancesResponse - SetNumInstancesRequest - SetNumInstancesResponse - StartModuleRequest - StartModuleResponse - StopModuleRequest - StopModuleResponse - GetHostnameRequest - GetHostnameResponse -*/ -package modules - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type ModulesServiceError_ErrorCode int32 - -const ( - ModulesServiceError_OK ModulesServiceError_ErrorCode = 0 - ModulesServiceError_INVALID_MODULE ModulesServiceError_ErrorCode = 1 - ModulesServiceError_INVALID_VERSION ModulesServiceError_ErrorCode = 2 - ModulesServiceError_INVALID_INSTANCES ModulesServiceError_ErrorCode = 3 - ModulesServiceError_TRANSIENT_ERROR ModulesServiceError_ErrorCode = 4 - ModulesServiceError_UNEXPECTED_STATE ModulesServiceError_ErrorCode = 5 -) - -var ModulesServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "INVALID_MODULE", - 2: "INVALID_VERSION", - 3: "INVALID_INSTANCES", - 4: "TRANSIENT_ERROR", - 5: "UNEXPECTED_STATE", -} -var ModulesServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "INVALID_MODULE": 1, - "INVALID_VERSION": 2, - "INVALID_INSTANCES": 3, - "TRANSIENT_ERROR": 4, - "UNEXPECTED_STATE": 5, -} - -func (x ModulesServiceError_ErrorCode) Enum() *ModulesServiceError_ErrorCode { - p := new(ModulesServiceError_ErrorCode) - *p = x - return p -} -func (x ModulesServiceError_ErrorCode) String() string { - return proto.EnumName(ModulesServiceError_ErrorCode_name, int32(x)) -} -func (x *ModulesServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(ModulesServiceError_ErrorCode_value, data, "ModulesServiceError_ErrorCode") - if err != nil { - return err - } - *x = ModulesServiceError_ErrorCode(value) - return nil -} - -type ModulesServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *ModulesServiceError) Reset() { *m = ModulesServiceError{} } -func (m *ModulesServiceError) String() string { return proto.CompactTextString(m) } -func (*ModulesServiceError) ProtoMessage() {} - -type GetModulesRequest struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetModulesRequest) Reset() { *m = GetModulesRequest{} } -func (m *GetModulesRequest) String() string { return proto.CompactTextString(m) } -func (*GetModulesRequest) ProtoMessage() {} - -type GetModulesResponse struct { - Module []string `protobuf:"bytes,1,rep,name=module" json:"module,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetModulesResponse) Reset() { *m = GetModulesResponse{} } -func (m *GetModulesResponse) String() string { return proto.CompactTextString(m) } -func (*GetModulesResponse) ProtoMessage() {} - -func (m *GetModulesResponse) GetModule() []string { - if m != nil { - return m.Module - } - return nil -} - -type GetVersionsRequest struct { - Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetVersionsRequest) Reset() { *m = GetVersionsRequest{} } -func (m *GetVersionsRequest) String() string { return proto.CompactTextString(m) } -func (*GetVersionsRequest) ProtoMessage() {} - -func (m *GetVersionsRequest) GetModule() string { - if m != nil && m.Module != nil { - return *m.Module - } - return "" -} - -type GetVersionsResponse struct { - Version []string `protobuf:"bytes,1,rep,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetVersionsResponse) Reset() { *m = GetVersionsResponse{} } -func (m *GetVersionsResponse) String() string { return proto.CompactTextString(m) } -func (*GetVersionsResponse) ProtoMessage() {} - -func (m *GetVersionsResponse) GetVersion() []string { - if m != nil { - return m.Version - } - return nil -} - -type GetDefaultVersionRequest struct { - Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetDefaultVersionRequest) Reset() { *m = GetDefaultVersionRequest{} } -func (m *GetDefaultVersionRequest) String() string { return proto.CompactTextString(m) } -func (*GetDefaultVersionRequest) ProtoMessage() {} - -func (m *GetDefaultVersionRequest) GetModule() string { - if m != nil && m.Module != nil { - return *m.Module - } - return "" -} - -type GetDefaultVersionResponse struct { - Version *string `protobuf:"bytes,1,req,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetDefaultVersionResponse) Reset() { *m = GetDefaultVersionResponse{} } -func (m *GetDefaultVersionResponse) String() string { return proto.CompactTextString(m) } -func (*GetDefaultVersionResponse) ProtoMessage() {} - -func (m *GetDefaultVersionResponse) GetVersion() string { - if m != nil && m.Version != nil { - return *m.Version - } - return "" -} - -type GetNumInstancesRequest struct { - Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetNumInstancesRequest) Reset() { *m = GetNumInstancesRequest{} } -func (m *GetNumInstancesRequest) String() string { return proto.CompactTextString(m) } -func (*GetNumInstancesRequest) ProtoMessage() {} - -func (m *GetNumInstancesRequest) GetModule() string { - if m != nil && m.Module != nil { - return *m.Module - } - return "" -} - -func (m *GetNumInstancesRequest) GetVersion() string { - if m != nil && m.Version != nil { - return *m.Version - } - return "" -} - -type GetNumInstancesResponse struct { - Instances *int64 `protobuf:"varint,1,req,name=instances" json:"instances,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetNumInstancesResponse) Reset() { *m = GetNumInstancesResponse{} } -func (m *GetNumInstancesResponse) String() string { return proto.CompactTextString(m) } -func (*GetNumInstancesResponse) ProtoMessage() {} - -func (m *GetNumInstancesResponse) GetInstances() int64 { - if m != nil && m.Instances != nil { - return *m.Instances - } - return 0 -} - -type SetNumInstancesRequest struct { - Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` - Instances *int64 `protobuf:"varint,3,req,name=instances" json:"instances,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SetNumInstancesRequest) Reset() { *m = SetNumInstancesRequest{} } -func (m *SetNumInstancesRequest) String() string { return proto.CompactTextString(m) } -func (*SetNumInstancesRequest) ProtoMessage() {} - -func (m *SetNumInstancesRequest) GetModule() string { - if m != nil && m.Module != nil { - return *m.Module - } - return "" -} - -func (m *SetNumInstancesRequest) GetVersion() string { - if m != nil && m.Version != nil { - return *m.Version - } - return "" -} - -func (m *SetNumInstancesRequest) GetInstances() int64 { - if m != nil && m.Instances != nil { - return *m.Instances - } - return 0 -} - -type SetNumInstancesResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *SetNumInstancesResponse) Reset() { *m = SetNumInstancesResponse{} } -func (m *SetNumInstancesResponse) String() string { return proto.CompactTextString(m) } -func (*SetNumInstancesResponse) ProtoMessage() {} - -type StartModuleRequest struct { - Module *string `protobuf:"bytes,1,req,name=module" json:"module,omitempty"` - Version *string `protobuf:"bytes,2,req,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *StartModuleRequest) Reset() { *m = StartModuleRequest{} } -func (m *StartModuleRequest) String() string { return proto.CompactTextString(m) } -func (*StartModuleRequest) ProtoMessage() {} - -func (m *StartModuleRequest) GetModule() string { - if m != nil && m.Module != nil { - return *m.Module - } - return "" -} - -func (m *StartModuleRequest) GetVersion() string { - if m != nil && m.Version != nil { - return *m.Version - } - return "" -} - -type StartModuleResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *StartModuleResponse) Reset() { *m = StartModuleResponse{} } -func (m *StartModuleResponse) String() string { return proto.CompactTextString(m) } -func (*StartModuleResponse) ProtoMessage() {} - -type StopModuleRequest struct { - Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *StopModuleRequest) Reset() { *m = StopModuleRequest{} } -func (m *StopModuleRequest) String() string { return proto.CompactTextString(m) } -func (*StopModuleRequest) ProtoMessage() {} - -func (m *StopModuleRequest) GetModule() string { - if m != nil && m.Module != nil { - return *m.Module - } - return "" -} - -func (m *StopModuleRequest) GetVersion() string { - if m != nil && m.Version != nil { - return *m.Version - } - return "" -} - -type StopModuleResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *StopModuleResponse) Reset() { *m = StopModuleResponse{} } -func (m *StopModuleResponse) String() string { return proto.CompactTextString(m) } -func (*StopModuleResponse) ProtoMessage() {} - -type GetHostnameRequest struct { - Module *string `protobuf:"bytes,1,opt,name=module" json:"module,omitempty"` - Version *string `protobuf:"bytes,2,opt,name=version" json:"version,omitempty"` - Instance *string `protobuf:"bytes,3,opt,name=instance" json:"instance,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetHostnameRequest) Reset() { *m = GetHostnameRequest{} } -func (m *GetHostnameRequest) String() string { return proto.CompactTextString(m) } -func (*GetHostnameRequest) ProtoMessage() {} - -func (m *GetHostnameRequest) GetModule() string { - if m != nil && m.Module != nil { - return *m.Module - } - return "" -} - -func (m *GetHostnameRequest) GetVersion() string { - if m != nil && m.Version != nil { - return *m.Version - } - return "" -} - -func (m *GetHostnameRequest) GetInstance() string { - if m != nil && m.Instance != nil { - return *m.Instance - } - return "" -} - -type GetHostnameResponse struct { - Hostname *string `protobuf:"bytes,1,req,name=hostname" json:"hostname,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetHostnameResponse) Reset() { *m = GetHostnameResponse{} } -func (m *GetHostnameResponse) String() string { return proto.CompactTextString(m) } -func (*GetHostnameResponse) ProtoMessage() {} - -func (m *GetHostnameResponse) GetHostname() string { - if m != nil && m.Hostname != nil { - return *m.Hostname - } - return "" -} - -func init() { - proto.RegisterEnum("appengine.ModulesServiceError_ErrorCode", ModulesServiceError_ErrorCode_name, ModulesServiceError_ErrorCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.proto deleted file mode 100644 index d29f0065a2f..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/modules/modules_service.proto +++ /dev/null @@ -1,80 +0,0 @@ -syntax = "proto2"; -option go_package = "modules"; - -package appengine; - -message ModulesServiceError { - enum ErrorCode { - OK = 0; - INVALID_MODULE = 1; - INVALID_VERSION = 2; - INVALID_INSTANCES = 3; - TRANSIENT_ERROR = 4; - UNEXPECTED_STATE = 5; - } -} - -message GetModulesRequest { -} - -message GetModulesResponse { - repeated string module = 1; -} - -message GetVersionsRequest { - optional string module = 1; -} - -message GetVersionsResponse { - repeated string version = 1; -} - -message GetDefaultVersionRequest { - optional string module = 1; -} - -message GetDefaultVersionResponse { - required string version = 1; -} - -message GetNumInstancesRequest { - optional string module = 1; - optional string version = 2; -} - -message GetNumInstancesResponse { - required int64 instances = 1; -} - -message SetNumInstancesRequest { - optional string module = 1; - optional string version = 2; - required int64 instances = 3; -} - -message SetNumInstancesResponse {} - -message StartModuleRequest { - required string module = 1; - required string version = 2; -} - -message StartModuleResponse {} - -message StopModuleRequest { - optional string module = 1; - optional string version = 2; -} - -message StopModuleResponse {} - -message GetHostnameRequest { - optional string module = 1; - optional string version = 2; - optional string instance = 3; -} - -message GetHostnameResponse { - required string hostname = 1; -} - diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/net.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/net.go deleted file mode 100644 index 12ddfbf5905..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/net.go +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -// This file implements a network dialer that limits the number of concurrent connections. -// It is only used for API calls. - -import ( - "log" - "net" - "runtime" - "sync" - "time" -) - -var limitSem = make(chan int, 100) // TODO(dsymonds): Use environment variable. - -func limitRelease() { - // non-blocking - select { - case <-limitSem: - default: - // This should not normally happen. - log.Print("appengine: unbalanced limitSem release!") - } -} - -func limitDial(network, addr string) (net.Conn, error) { - limitSem <- 1 - - // Dial with a timeout in case the API host is MIA. - // The connection should normally be very fast. - conn, err := net.DialTimeout(network, addr, 500*time.Millisecond) - if err != nil { - limitRelease() - return nil, err - } - lc := &limitConn{Conn: conn} - runtime.SetFinalizer(lc, (*limitConn).Close) // shouldn't usually be required - return lc, nil -} - -type limitConn struct { - mu sync.Mutex // only for closing the net.Conn - net.Conn -} - -func (lc *limitConn) Close() error { - lc.mu.Lock() - defer lc.mu.Unlock() - - if lc.Conn == nil { - // Silently ignore double close. - return nil - } - limitRelease() - err := lc.Conn.Close() - lc.Conn = nil - runtime.SetFinalizer(lc, nil) - return err -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/net_test.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/net_test.go deleted file mode 100644 index 4bdbcc5caf0..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/net_test.go +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package internal - -import ( - "sync" - "testing" - "time" - - basepb "google.golang.org/appengine/internal/base" -) - -func TestDialLimit(t *testing.T) { - // Fill up semaphore with false acquisitions to permit only two TCP connections at a time. - // We don't replace limitSem because that results in a data race when net/http lazily closes connections. - nFake := cap(limitSem) - 2 - for i := 0; i < nFake; i++ { - limitSem <- 1 - } - defer func() { - for i := 0; i < nFake; i++ { - <-limitSem - } - }() - - f, c, cleanup := setup() // setup is in api_test.go - defer cleanup() - f.hang = make(chan int) - - // If we make two RunSlowly RPCs (which will wait for f.hang to be strobed), - // then the simple Non200 RPC should hang. - var wg sync.WaitGroup - wg.Add(2) - for i := 0; i < 2; i++ { - go func() { - defer wg.Done() - c.Call("errors", "RunSlowly", &basepb.VoidProto{}, &basepb.VoidProto{}, nil) - }() - } - time.Sleep(50 * time.Millisecond) // let those two RPCs start - - err := c.Call("errors", "Non200", &basepb.VoidProto{}, &basepb.VoidProto{}, &CallOptions{ - Timeout: 50 * time.Millisecond, - }) - if err != errTimeout { - t.Errorf("Non200 RPC returned with err %v, want errTimeout", err) - } - - // Drain the two RunSlowly calls. - f.hang <- 1 - f.hang <- 1 - wg.Wait() -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/regen.sh b/Godeps/_workspace/src/google.golang.org/appengine/internal/regen.sh deleted file mode 100644 index 1dc33054c09..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/regen.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -e -# -# This script rebuilds the generated code for the protocol buffers. -# To run this you will need protoc and goprotobuf installed; -# see https://github.com/golang/protobuf for instructions. - -PKG=google.golang.org/appengine - -function die() { - echo 1>&2 $* - exit 1 -} - -# Sanity check that the right tools are accessible. -for tool in go protoc protoc-gen-go; do - q=$(which $tool) || die "didn't find $tool" - echo 1>&2 "$tool: $q" -done - -echo -n 1>&2 "finding package dir... " -pkgdir=$(go list -f '{{.Dir}}' $PKG) -echo 1>&2 $pkgdir -base=$(echo $pkgdir | sed "s,/$PKG\$,,") -echo 1>&2 "base: $base" -cd $base -for f in $(find $PKG/internal -name '*.proto'); do - echo 1>&2 "* $f" - protoc --go_out=. $f -done - -# Fix up import lines. -# This should be fixed upstream. -# https://code.google.com/p/goprotobuf/issues/detail?id=32 -for f in $(find $PKG/internal -name '*.pb.go'); do - sed -i '/^import.*\.pb"$/s,/[^/]*\.pb"$,",' $f -done diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.pb.go deleted file mode 100644 index 2bc44b9758b..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +++ /dev/null @@ -1,230 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/remote_api/remote_api.proto -// DO NOT EDIT! - -/* -Package remote_api is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/remote_api/remote_api.proto - -It has these top-level messages: - Request - ApplicationError - RpcError - Response -*/ -package remote_api - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type RpcError_ErrorCode int32 - -const ( - RpcError_UNKNOWN RpcError_ErrorCode = 0 - RpcError_CALL_NOT_FOUND RpcError_ErrorCode = 1 - RpcError_PARSE_ERROR RpcError_ErrorCode = 2 - RpcError_SECURITY_VIOLATION RpcError_ErrorCode = 3 - RpcError_OVER_QUOTA RpcError_ErrorCode = 4 - RpcError_REQUEST_TOO_LARGE RpcError_ErrorCode = 5 - RpcError_CAPABILITY_DISABLED RpcError_ErrorCode = 6 - RpcError_FEATURE_DISABLED RpcError_ErrorCode = 7 - RpcError_BAD_REQUEST RpcError_ErrorCode = 8 - RpcError_RESPONSE_TOO_LARGE RpcError_ErrorCode = 9 - RpcError_CANCELLED RpcError_ErrorCode = 10 - RpcError_REPLAY_ERROR RpcError_ErrorCode = 11 - RpcError_DEADLINE_EXCEEDED RpcError_ErrorCode = 12 -) - -var RpcError_ErrorCode_name = map[int32]string{ - 0: "UNKNOWN", - 1: "CALL_NOT_FOUND", - 2: "PARSE_ERROR", - 3: "SECURITY_VIOLATION", - 4: "OVER_QUOTA", - 5: "REQUEST_TOO_LARGE", - 6: "CAPABILITY_DISABLED", - 7: "FEATURE_DISABLED", - 8: "BAD_REQUEST", - 9: "RESPONSE_TOO_LARGE", - 10: "CANCELLED", - 11: "REPLAY_ERROR", - 12: "DEADLINE_EXCEEDED", -} -var RpcError_ErrorCode_value = map[string]int32{ - "UNKNOWN": 0, - "CALL_NOT_FOUND": 1, - "PARSE_ERROR": 2, - "SECURITY_VIOLATION": 3, - "OVER_QUOTA": 4, - "REQUEST_TOO_LARGE": 5, - "CAPABILITY_DISABLED": 6, - "FEATURE_DISABLED": 7, - "BAD_REQUEST": 8, - "RESPONSE_TOO_LARGE": 9, - "CANCELLED": 10, - "REPLAY_ERROR": 11, - "DEADLINE_EXCEEDED": 12, -} - -func (x RpcError_ErrorCode) Enum() *RpcError_ErrorCode { - p := new(RpcError_ErrorCode) - *p = x - return p -} -func (x RpcError_ErrorCode) String() string { - return proto.EnumName(RpcError_ErrorCode_name, int32(x)) -} -func (x *RpcError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(RpcError_ErrorCode_value, data, "RpcError_ErrorCode") - if err != nil { - return err - } - *x = RpcError_ErrorCode(value) - return nil -} - -type Request struct { - ServiceName *string `protobuf:"bytes,2,req,name=service_name" json:"service_name,omitempty"` - Method *string `protobuf:"bytes,3,req,name=method" json:"method,omitempty"` - Request []byte `protobuf:"bytes,4,req,name=request" json:"request,omitempty"` - RequestId *string `protobuf:"bytes,5,opt,name=request_id" json:"request_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Request) Reset() { *m = Request{} } -func (m *Request) String() string { return proto.CompactTextString(m) } -func (*Request) ProtoMessage() {} - -func (m *Request) GetServiceName() string { - if m != nil && m.ServiceName != nil { - return *m.ServiceName - } - return "" -} - -func (m *Request) GetMethod() string { - if m != nil && m.Method != nil { - return *m.Method - } - return "" -} - -func (m *Request) GetRequest() []byte { - if m != nil { - return m.Request - } - return nil -} - -func (m *Request) GetRequestId() string { - if m != nil && m.RequestId != nil { - return *m.RequestId - } - return "" -} - -type ApplicationError struct { - Code *int32 `protobuf:"varint,1,req,name=code" json:"code,omitempty"` - Detail *string `protobuf:"bytes,2,req,name=detail" json:"detail,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ApplicationError) Reset() { *m = ApplicationError{} } -func (m *ApplicationError) String() string { return proto.CompactTextString(m) } -func (*ApplicationError) ProtoMessage() {} - -func (m *ApplicationError) GetCode() int32 { - if m != nil && m.Code != nil { - return *m.Code - } - return 0 -} - -func (m *ApplicationError) GetDetail() string { - if m != nil && m.Detail != nil { - return *m.Detail - } - return "" -} - -type RpcError struct { - Code *int32 `protobuf:"varint,1,req,name=code" json:"code,omitempty"` - Detail *string `protobuf:"bytes,2,opt,name=detail" json:"detail,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *RpcError) Reset() { *m = RpcError{} } -func (m *RpcError) String() string { return proto.CompactTextString(m) } -func (*RpcError) ProtoMessage() {} - -func (m *RpcError) GetCode() int32 { - if m != nil && m.Code != nil { - return *m.Code - } - return 0 -} - -func (m *RpcError) GetDetail() string { - if m != nil && m.Detail != nil { - return *m.Detail - } - return "" -} - -type Response struct { - Response []byte `protobuf:"bytes,1,opt,name=response" json:"response,omitempty"` - Exception []byte `protobuf:"bytes,2,opt,name=exception" json:"exception,omitempty"` - ApplicationError *ApplicationError `protobuf:"bytes,3,opt,name=application_error" json:"application_error,omitempty"` - JavaException []byte `protobuf:"bytes,4,opt,name=java_exception" json:"java_exception,omitempty"` - RpcError *RpcError `protobuf:"bytes,5,opt,name=rpc_error" json:"rpc_error,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Response) Reset() { *m = Response{} } -func (m *Response) String() string { return proto.CompactTextString(m) } -func (*Response) ProtoMessage() {} - -func (m *Response) GetResponse() []byte { - if m != nil { - return m.Response - } - return nil -} - -func (m *Response) GetException() []byte { - if m != nil { - return m.Exception - } - return nil -} - -func (m *Response) GetApplicationError() *ApplicationError { - if m != nil { - return m.ApplicationError - } - return nil -} - -func (m *Response) GetJavaException() []byte { - if m != nil { - return m.JavaException - } - return nil -} - -func (m *Response) GetRpcError() *RpcError { - if m != nil { - return m.RpcError - } - return nil -} - -func init() { - proto.RegisterEnum("remote_api.RpcError_ErrorCode", RpcError_ErrorCode_name, RpcError_ErrorCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.proto deleted file mode 100644 index f21763a4e23..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/remote_api/remote_api.proto +++ /dev/null @@ -1,44 +0,0 @@ -syntax = "proto2"; -option go_package = "remote_api"; - -package remote_api; - -message Request { - required string service_name = 2; - required string method = 3; - required bytes request = 4; - optional string request_id = 5; -} - -message ApplicationError { - required int32 code = 1; - required string detail = 2; -} - -message RpcError { - enum ErrorCode { - UNKNOWN = 0; - CALL_NOT_FOUND = 1; - PARSE_ERROR = 2; - SECURITY_VIOLATION = 3; - OVER_QUOTA = 4; - REQUEST_TOO_LARGE = 5; - CAPABILITY_DISABLED = 6; - FEATURE_DISABLED = 7; - BAD_REQUEST = 8; - RESPONSE_TOO_LARGE = 9; - CANCELLED = 10; - REPLAY_ERROR = 11; - DEADLINE_EXCEEDED = 12; - } - required int32 code = 1; - optional string detail = 2; -} - -message Response { - optional bytes response = 1; - optional bytes exception = 2; - optional ApplicationError application_error = 3; - optional bytes java_exception = 4; - optional RpcError rpc_error = 5; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.pb.go deleted file mode 100644 index 3da87ce376b..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.pb.go +++ /dev/null @@ -1,2072 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/search/search.proto -// DO NOT EDIT! - -/* -Package search is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/search/search.proto - -It has these top-level messages: - Scope - Entry - AccessControlList - FieldValue - Field - FieldTypes - FacetValue - Facet - Document - SearchServiceError - RequestStatus - IndexSpec - IndexMetadata - IndexDocumentParams - IndexDocumentRequest - IndexDocumentResponse - DeleteDocumentParams - DeleteDocumentRequest - DeleteDocumentResponse - ListDocumentsParams - ListDocumentsRequest - ListDocumentsResponse - ListIndexesParams - ListIndexesRequest - ListIndexesResponse - DeleteSchemaParams - DeleteSchemaRequest - DeleteSchemaResponse - SortSpec - ScorerSpec - FieldSpec - FacetRange - FacetRequestParam - FacetAutoDetectParam - FacetRequest - FacetRefine - SearchParams - SearchRequest - FacetResultValue - FacetResult - SearchResult - SearchResponse -*/ -package search - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type Scope_Type int32 - -const ( - Scope_USER_BY_CANONICAL_ID Scope_Type = 1 - Scope_USER_BY_EMAIL Scope_Type = 2 - Scope_GROUP_BY_CANONICAL_ID Scope_Type = 3 - Scope_GROUP_BY_EMAIL Scope_Type = 4 - Scope_GROUP_BY_DOMAIN Scope_Type = 5 - Scope_ALL_USERS Scope_Type = 6 - Scope_ALL_AUTHENTICATED_USERS Scope_Type = 7 -) - -var Scope_Type_name = map[int32]string{ - 1: "USER_BY_CANONICAL_ID", - 2: "USER_BY_EMAIL", - 3: "GROUP_BY_CANONICAL_ID", - 4: "GROUP_BY_EMAIL", - 5: "GROUP_BY_DOMAIN", - 6: "ALL_USERS", - 7: "ALL_AUTHENTICATED_USERS", -} -var Scope_Type_value = map[string]int32{ - "USER_BY_CANONICAL_ID": 1, - "USER_BY_EMAIL": 2, - "GROUP_BY_CANONICAL_ID": 3, - "GROUP_BY_EMAIL": 4, - "GROUP_BY_DOMAIN": 5, - "ALL_USERS": 6, - "ALL_AUTHENTICATED_USERS": 7, -} - -func (x Scope_Type) Enum() *Scope_Type { - p := new(Scope_Type) - *p = x - return p -} -func (x Scope_Type) String() string { - return proto.EnumName(Scope_Type_name, int32(x)) -} -func (x *Scope_Type) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Scope_Type_value, data, "Scope_Type") - if err != nil { - return err - } - *x = Scope_Type(value) - return nil -} - -type Entry_Permission int32 - -const ( - Entry_READ Entry_Permission = 1 - Entry_WRITE Entry_Permission = 2 - Entry_FULL_CONTROL Entry_Permission = 3 -) - -var Entry_Permission_name = map[int32]string{ - 1: "READ", - 2: "WRITE", - 3: "FULL_CONTROL", -} -var Entry_Permission_value = map[string]int32{ - "READ": 1, - "WRITE": 2, - "FULL_CONTROL": 3, -} - -func (x Entry_Permission) Enum() *Entry_Permission { - p := new(Entry_Permission) - *p = x - return p -} -func (x Entry_Permission) String() string { - return proto.EnumName(Entry_Permission_name, int32(x)) -} -func (x *Entry_Permission) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Entry_Permission_value, data, "Entry_Permission") - if err != nil { - return err - } - *x = Entry_Permission(value) - return nil -} - -type FieldValue_ContentType int32 - -const ( - FieldValue_TEXT FieldValue_ContentType = 0 - FieldValue_HTML FieldValue_ContentType = 1 - FieldValue_ATOM FieldValue_ContentType = 2 - FieldValue_DATE FieldValue_ContentType = 3 - FieldValue_NUMBER FieldValue_ContentType = 4 - FieldValue_GEO FieldValue_ContentType = 5 -) - -var FieldValue_ContentType_name = map[int32]string{ - 0: "TEXT", - 1: "HTML", - 2: "ATOM", - 3: "DATE", - 4: "NUMBER", - 5: "GEO", -} -var FieldValue_ContentType_value = map[string]int32{ - "TEXT": 0, - "HTML": 1, - "ATOM": 2, - "DATE": 3, - "NUMBER": 4, - "GEO": 5, -} - -func (x FieldValue_ContentType) Enum() *FieldValue_ContentType { - p := new(FieldValue_ContentType) - *p = x - return p -} -func (x FieldValue_ContentType) String() string { - return proto.EnumName(FieldValue_ContentType_name, int32(x)) -} -func (x *FieldValue_ContentType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FieldValue_ContentType_value, data, "FieldValue_ContentType") - if err != nil { - return err - } - *x = FieldValue_ContentType(value) - return nil -} - -type FacetValue_ContentType int32 - -const ( - FacetValue_ATOM FacetValue_ContentType = 2 - FacetValue_DATE FacetValue_ContentType = 3 - FacetValue_NUMBER FacetValue_ContentType = 4 -) - -var FacetValue_ContentType_name = map[int32]string{ - 2: "ATOM", - 3: "DATE", - 4: "NUMBER", -} -var FacetValue_ContentType_value = map[string]int32{ - "ATOM": 2, - "DATE": 3, - "NUMBER": 4, -} - -func (x FacetValue_ContentType) Enum() *FacetValue_ContentType { - p := new(FacetValue_ContentType) - *p = x - return p -} -func (x FacetValue_ContentType) String() string { - return proto.EnumName(FacetValue_ContentType_name, int32(x)) -} -func (x *FacetValue_ContentType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(FacetValue_ContentType_value, data, "FacetValue_ContentType") - if err != nil { - return err - } - *x = FacetValue_ContentType(value) - return nil -} - -type Document_Storage int32 - -const ( - Document_DISK Document_Storage = 0 -) - -var Document_Storage_name = map[int32]string{ - 0: "DISK", -} -var Document_Storage_value = map[string]int32{ - "DISK": 0, -} - -func (x Document_Storage) Enum() *Document_Storage { - p := new(Document_Storage) - *p = x - return p -} -func (x Document_Storage) String() string { - return proto.EnumName(Document_Storage_name, int32(x)) -} -func (x *Document_Storage) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(Document_Storage_value, data, "Document_Storage") - if err != nil { - return err - } - *x = Document_Storage(value) - return nil -} - -type SearchServiceError_ErrorCode int32 - -const ( - SearchServiceError_OK SearchServiceError_ErrorCode = 0 - SearchServiceError_INVALID_REQUEST SearchServiceError_ErrorCode = 1 - SearchServiceError_TRANSIENT_ERROR SearchServiceError_ErrorCode = 2 - SearchServiceError_INTERNAL_ERROR SearchServiceError_ErrorCode = 3 - SearchServiceError_PERMISSION_DENIED SearchServiceError_ErrorCode = 4 - SearchServiceError_TIMEOUT SearchServiceError_ErrorCode = 5 - SearchServiceError_CONCURRENT_TRANSACTION SearchServiceError_ErrorCode = 6 -) - -var SearchServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "INVALID_REQUEST", - 2: "TRANSIENT_ERROR", - 3: "INTERNAL_ERROR", - 4: "PERMISSION_DENIED", - 5: "TIMEOUT", - 6: "CONCURRENT_TRANSACTION", -} -var SearchServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "INVALID_REQUEST": 1, - "TRANSIENT_ERROR": 2, - "INTERNAL_ERROR": 3, - "PERMISSION_DENIED": 4, - "TIMEOUT": 5, - "CONCURRENT_TRANSACTION": 6, -} - -func (x SearchServiceError_ErrorCode) Enum() *SearchServiceError_ErrorCode { - p := new(SearchServiceError_ErrorCode) - *p = x - return p -} -func (x SearchServiceError_ErrorCode) String() string { - return proto.EnumName(SearchServiceError_ErrorCode_name, int32(x)) -} -func (x *SearchServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(SearchServiceError_ErrorCode_value, data, "SearchServiceError_ErrorCode") - if err != nil { - return err - } - *x = SearchServiceError_ErrorCode(value) - return nil -} - -type IndexSpec_Consistency int32 - -const ( - IndexSpec_GLOBAL IndexSpec_Consistency = 0 - IndexSpec_PER_DOCUMENT IndexSpec_Consistency = 1 -) - -var IndexSpec_Consistency_name = map[int32]string{ - 0: "GLOBAL", - 1: "PER_DOCUMENT", -} -var IndexSpec_Consistency_value = map[string]int32{ - "GLOBAL": 0, - "PER_DOCUMENT": 1, -} - -func (x IndexSpec_Consistency) Enum() *IndexSpec_Consistency { - p := new(IndexSpec_Consistency) - *p = x - return p -} -func (x IndexSpec_Consistency) String() string { - return proto.EnumName(IndexSpec_Consistency_name, int32(x)) -} -func (x *IndexSpec_Consistency) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(IndexSpec_Consistency_value, data, "IndexSpec_Consistency") - if err != nil { - return err - } - *x = IndexSpec_Consistency(value) - return nil -} - -type IndexSpec_Source int32 - -const ( - IndexSpec_SEARCH IndexSpec_Source = 0 - IndexSpec_DATASTORE IndexSpec_Source = 1 - IndexSpec_CLOUD_STORAGE IndexSpec_Source = 2 -) - -var IndexSpec_Source_name = map[int32]string{ - 0: "SEARCH", - 1: "DATASTORE", - 2: "CLOUD_STORAGE", -} -var IndexSpec_Source_value = map[string]int32{ - "SEARCH": 0, - "DATASTORE": 1, - "CLOUD_STORAGE": 2, -} - -func (x IndexSpec_Source) Enum() *IndexSpec_Source { - p := new(IndexSpec_Source) - *p = x - return p -} -func (x IndexSpec_Source) String() string { - return proto.EnumName(IndexSpec_Source_name, int32(x)) -} -func (x *IndexSpec_Source) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(IndexSpec_Source_value, data, "IndexSpec_Source") - if err != nil { - return err - } - *x = IndexSpec_Source(value) - return nil -} - -type IndexSpec_Mode int32 - -const ( - IndexSpec_PRIORITY IndexSpec_Mode = 0 - IndexSpec_BACKGROUND IndexSpec_Mode = 1 -) - -var IndexSpec_Mode_name = map[int32]string{ - 0: "PRIORITY", - 1: "BACKGROUND", -} -var IndexSpec_Mode_value = map[string]int32{ - "PRIORITY": 0, - "BACKGROUND": 1, -} - -func (x IndexSpec_Mode) Enum() *IndexSpec_Mode { - p := new(IndexSpec_Mode) - *p = x - return p -} -func (x IndexSpec_Mode) String() string { - return proto.EnumName(IndexSpec_Mode_name, int32(x)) -} -func (x *IndexSpec_Mode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(IndexSpec_Mode_value, data, "IndexSpec_Mode") - if err != nil { - return err - } - *x = IndexSpec_Mode(value) - return nil -} - -type IndexDocumentParams_Freshness int32 - -const ( - IndexDocumentParams_SYNCHRONOUSLY IndexDocumentParams_Freshness = 0 - IndexDocumentParams_WHEN_CONVENIENT IndexDocumentParams_Freshness = 1 -) - -var IndexDocumentParams_Freshness_name = map[int32]string{ - 0: "SYNCHRONOUSLY", - 1: "WHEN_CONVENIENT", -} -var IndexDocumentParams_Freshness_value = map[string]int32{ - "SYNCHRONOUSLY": 0, - "WHEN_CONVENIENT": 1, -} - -func (x IndexDocumentParams_Freshness) Enum() *IndexDocumentParams_Freshness { - p := new(IndexDocumentParams_Freshness) - *p = x - return p -} -func (x IndexDocumentParams_Freshness) String() string { - return proto.EnumName(IndexDocumentParams_Freshness_name, int32(x)) -} -func (x *IndexDocumentParams_Freshness) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(IndexDocumentParams_Freshness_value, data, "IndexDocumentParams_Freshness") - if err != nil { - return err - } - *x = IndexDocumentParams_Freshness(value) - return nil -} - -type ScorerSpec_Scorer int32 - -const ( - ScorerSpec_RESCORING_MATCH_SCORER ScorerSpec_Scorer = 0 - ScorerSpec_MATCH_SCORER ScorerSpec_Scorer = 2 -) - -var ScorerSpec_Scorer_name = map[int32]string{ - 0: "RESCORING_MATCH_SCORER", - 2: "MATCH_SCORER", -} -var ScorerSpec_Scorer_value = map[string]int32{ - "RESCORING_MATCH_SCORER": 0, - "MATCH_SCORER": 2, -} - -func (x ScorerSpec_Scorer) Enum() *ScorerSpec_Scorer { - p := new(ScorerSpec_Scorer) - *p = x - return p -} -func (x ScorerSpec_Scorer) String() string { - return proto.EnumName(ScorerSpec_Scorer_name, int32(x)) -} -func (x *ScorerSpec_Scorer) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(ScorerSpec_Scorer_value, data, "ScorerSpec_Scorer") - if err != nil { - return err - } - *x = ScorerSpec_Scorer(value) - return nil -} - -type SearchParams_CursorType int32 - -const ( - SearchParams_NONE SearchParams_CursorType = 0 - SearchParams_SINGLE SearchParams_CursorType = 1 - SearchParams_PER_RESULT SearchParams_CursorType = 2 -) - -var SearchParams_CursorType_name = map[int32]string{ - 0: "NONE", - 1: "SINGLE", - 2: "PER_RESULT", -} -var SearchParams_CursorType_value = map[string]int32{ - "NONE": 0, - "SINGLE": 1, - "PER_RESULT": 2, -} - -func (x SearchParams_CursorType) Enum() *SearchParams_CursorType { - p := new(SearchParams_CursorType) - *p = x - return p -} -func (x SearchParams_CursorType) String() string { - return proto.EnumName(SearchParams_CursorType_name, int32(x)) -} -func (x *SearchParams_CursorType) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(SearchParams_CursorType_value, data, "SearchParams_CursorType") - if err != nil { - return err - } - *x = SearchParams_CursorType(value) - return nil -} - -type SearchParams_ParsingMode int32 - -const ( - SearchParams_STRICT SearchParams_ParsingMode = 0 - SearchParams_RELAXED SearchParams_ParsingMode = 1 -) - -var SearchParams_ParsingMode_name = map[int32]string{ - 0: "STRICT", - 1: "RELAXED", -} -var SearchParams_ParsingMode_value = map[string]int32{ - "STRICT": 0, - "RELAXED": 1, -} - -func (x SearchParams_ParsingMode) Enum() *SearchParams_ParsingMode { - p := new(SearchParams_ParsingMode) - *p = x - return p -} -func (x SearchParams_ParsingMode) String() string { - return proto.EnumName(SearchParams_ParsingMode_name, int32(x)) -} -func (x *SearchParams_ParsingMode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(SearchParams_ParsingMode_value, data, "SearchParams_ParsingMode") - if err != nil { - return err - } - *x = SearchParams_ParsingMode(value) - return nil -} - -type Scope struct { - Type *Scope_Type `protobuf:"varint,1,opt,name=type,enum=search.Scope_Type" json:"type,omitempty"` - Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Scope) Reset() { *m = Scope{} } -func (m *Scope) String() string { return proto.CompactTextString(m) } -func (*Scope) ProtoMessage() {} - -func (m *Scope) GetType() Scope_Type { - if m != nil && m.Type != nil { - return *m.Type - } - return Scope_USER_BY_CANONICAL_ID -} - -func (m *Scope) GetValue() string { - if m != nil && m.Value != nil { - return *m.Value - } - return "" -} - -type Entry struct { - Scope *Scope `protobuf:"bytes,1,opt,name=scope" json:"scope,omitempty"` - Permission *Entry_Permission `protobuf:"varint,2,opt,name=permission,enum=search.Entry_Permission" json:"permission,omitempty"` - DisplayName *string `protobuf:"bytes,3,opt,name=display_name" json:"display_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Entry) Reset() { *m = Entry{} } -func (m *Entry) String() string { return proto.CompactTextString(m) } -func (*Entry) ProtoMessage() {} - -func (m *Entry) GetScope() *Scope { - if m != nil { - return m.Scope - } - return nil -} - -func (m *Entry) GetPermission() Entry_Permission { - if m != nil && m.Permission != nil { - return *m.Permission - } - return Entry_READ -} - -func (m *Entry) GetDisplayName() string { - if m != nil && m.DisplayName != nil { - return *m.DisplayName - } - return "" -} - -type AccessControlList struct { - Owner *string `protobuf:"bytes,1,opt,name=owner" json:"owner,omitempty"` - Entries []*Entry `protobuf:"bytes,2,rep,name=entries" json:"entries,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *AccessControlList) Reset() { *m = AccessControlList{} } -func (m *AccessControlList) String() string { return proto.CompactTextString(m) } -func (*AccessControlList) ProtoMessage() {} - -func (m *AccessControlList) GetOwner() string { - if m != nil && m.Owner != nil { - return *m.Owner - } - return "" -} - -func (m *AccessControlList) GetEntries() []*Entry { - if m != nil { - return m.Entries - } - return nil -} - -type FieldValue struct { - Type *FieldValue_ContentType `protobuf:"varint,1,opt,name=type,enum=search.FieldValue_ContentType,def=0" json:"type,omitempty"` - Language *string `protobuf:"bytes,2,opt,name=language,def=en" json:"language,omitempty"` - StringValue *string `protobuf:"bytes,3,opt,name=string_value" json:"string_value,omitempty"` - Geo *FieldValue_Geo `protobuf:"group,4,opt" json:"geo,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FieldValue) Reset() { *m = FieldValue{} } -func (m *FieldValue) String() string { return proto.CompactTextString(m) } -func (*FieldValue) ProtoMessage() {} - -const Default_FieldValue_Type FieldValue_ContentType = FieldValue_TEXT -const Default_FieldValue_Language string = "en" - -func (m *FieldValue) GetType() FieldValue_ContentType { - if m != nil && m.Type != nil { - return *m.Type - } - return Default_FieldValue_Type -} - -func (m *FieldValue) GetLanguage() string { - if m != nil && m.Language != nil { - return *m.Language - } - return Default_FieldValue_Language -} - -func (m *FieldValue) GetStringValue() string { - if m != nil && m.StringValue != nil { - return *m.StringValue - } - return "" -} - -func (m *FieldValue) GetGeo() *FieldValue_Geo { - if m != nil { - return m.Geo - } - return nil -} - -type FieldValue_Geo struct { - Lat *float64 `protobuf:"fixed64,5,req,name=lat" json:"lat,omitempty"` - Lng *float64 `protobuf:"fixed64,6,req,name=lng" json:"lng,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FieldValue_Geo) Reset() { *m = FieldValue_Geo{} } -func (m *FieldValue_Geo) String() string { return proto.CompactTextString(m) } -func (*FieldValue_Geo) ProtoMessage() {} - -func (m *FieldValue_Geo) GetLat() float64 { - if m != nil && m.Lat != nil { - return *m.Lat - } - return 0 -} - -func (m *FieldValue_Geo) GetLng() float64 { - if m != nil && m.Lng != nil { - return *m.Lng - } - return 0 -} - -type Field struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Value *FieldValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Field) Reset() { *m = Field{} } -func (m *Field) String() string { return proto.CompactTextString(m) } -func (*Field) ProtoMessage() {} - -func (m *Field) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *Field) GetValue() *FieldValue { - if m != nil { - return m.Value - } - return nil -} - -type FieldTypes struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Type []FieldValue_ContentType `protobuf:"varint,2,rep,name=type,enum=search.FieldValue_ContentType" json:"type,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FieldTypes) Reset() { *m = FieldTypes{} } -func (m *FieldTypes) String() string { return proto.CompactTextString(m) } -func (*FieldTypes) ProtoMessage() {} - -func (m *FieldTypes) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *FieldTypes) GetType() []FieldValue_ContentType { - if m != nil { - return m.Type - } - return nil -} - -type FacetValue struct { - Type *FacetValue_ContentType `protobuf:"varint,1,opt,name=type,enum=search.FacetValue_ContentType,def=2" json:"type,omitempty"` - StringValue *string `protobuf:"bytes,3,opt,name=string_value" json:"string_value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetValue) Reset() { *m = FacetValue{} } -func (m *FacetValue) String() string { return proto.CompactTextString(m) } -func (*FacetValue) ProtoMessage() {} - -const Default_FacetValue_Type FacetValue_ContentType = FacetValue_ATOM - -func (m *FacetValue) GetType() FacetValue_ContentType { - if m != nil && m.Type != nil { - return *m.Type - } - return Default_FacetValue_Type -} - -func (m *FacetValue) GetStringValue() string { - if m != nil && m.StringValue != nil { - return *m.StringValue - } - return "" -} - -type Facet struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Value *FacetValue `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Facet) Reset() { *m = Facet{} } -func (m *Facet) String() string { return proto.CompactTextString(m) } -func (*Facet) ProtoMessage() {} - -func (m *Facet) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *Facet) GetValue() *FacetValue { - if m != nil { - return m.Value - } - return nil -} - -type Document struct { - Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"` - Language *string `protobuf:"bytes,2,opt,name=language,def=en" json:"language,omitempty"` - Field []*Field `protobuf:"bytes,3,rep,name=field" json:"field,omitempty"` - OrderId *int32 `protobuf:"varint,4,opt,name=order_id" json:"order_id,omitempty"` - Storage *Document_Storage `protobuf:"varint,5,opt,name=storage,enum=search.Document_Storage,def=0" json:"storage,omitempty"` - Acl *AccessControlList `protobuf:"bytes,6,opt,name=acl" json:"acl,omitempty"` - Version *int64 `protobuf:"varint,7,opt,name=version" json:"version,omitempty"` - Facet []*Facet `protobuf:"bytes,8,rep,name=facet" json:"facet,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *Document) Reset() { *m = Document{} } -func (m *Document) String() string { return proto.CompactTextString(m) } -func (*Document) ProtoMessage() {} - -const Default_Document_Language string = "en" -const Default_Document_Storage Document_Storage = Document_DISK - -func (m *Document) GetId() string { - if m != nil && m.Id != nil { - return *m.Id - } - return "" -} - -func (m *Document) GetLanguage() string { - if m != nil && m.Language != nil { - return *m.Language - } - return Default_Document_Language -} - -func (m *Document) GetField() []*Field { - if m != nil { - return m.Field - } - return nil -} - -func (m *Document) GetOrderId() int32 { - if m != nil && m.OrderId != nil { - return *m.OrderId - } - return 0 -} - -func (m *Document) GetStorage() Document_Storage { - if m != nil && m.Storage != nil { - return *m.Storage - } - return Default_Document_Storage -} - -func (m *Document) GetAcl() *AccessControlList { - if m != nil { - return m.Acl - } - return nil -} - -func (m *Document) GetVersion() int64 { - if m != nil && m.Version != nil { - return *m.Version - } - return 0 -} - -func (m *Document) GetFacet() []*Facet { - if m != nil { - return m.Facet - } - return nil -} - -type SearchServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *SearchServiceError) Reset() { *m = SearchServiceError{} } -func (m *SearchServiceError) String() string { return proto.CompactTextString(m) } -func (*SearchServiceError) ProtoMessage() {} - -type RequestStatus struct { - Code *SearchServiceError_ErrorCode `protobuf:"varint,1,req,name=code,enum=search.SearchServiceError_ErrorCode" json:"code,omitempty"` - ErrorDetail *string `protobuf:"bytes,2,opt,name=error_detail" json:"error_detail,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *RequestStatus) Reset() { *m = RequestStatus{} } -func (m *RequestStatus) String() string { return proto.CompactTextString(m) } -func (*RequestStatus) ProtoMessage() {} - -func (m *RequestStatus) GetCode() SearchServiceError_ErrorCode { - if m != nil && m.Code != nil { - return *m.Code - } - return SearchServiceError_OK -} - -func (m *RequestStatus) GetErrorDetail() string { - if m != nil && m.ErrorDetail != nil { - return *m.ErrorDetail - } - return "" -} - -type IndexSpec struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Consistency *IndexSpec_Consistency `protobuf:"varint,2,opt,name=consistency,enum=search.IndexSpec_Consistency,def=1" json:"consistency,omitempty"` - Namespace *string `protobuf:"bytes,3,opt,name=namespace" json:"namespace,omitempty"` - Version *int32 `protobuf:"varint,4,opt,name=version" json:"version,omitempty"` - Source *IndexSpec_Source `protobuf:"varint,5,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"` - Mode *IndexSpec_Mode `protobuf:"varint,6,opt,name=mode,enum=search.IndexSpec_Mode,def=0" json:"mode,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexSpec) Reset() { *m = IndexSpec{} } -func (m *IndexSpec) String() string { return proto.CompactTextString(m) } -func (*IndexSpec) ProtoMessage() {} - -const Default_IndexSpec_Consistency IndexSpec_Consistency = IndexSpec_PER_DOCUMENT -const Default_IndexSpec_Source IndexSpec_Source = IndexSpec_SEARCH -const Default_IndexSpec_Mode IndexSpec_Mode = IndexSpec_PRIORITY - -func (m *IndexSpec) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *IndexSpec) GetConsistency() IndexSpec_Consistency { - if m != nil && m.Consistency != nil { - return *m.Consistency - } - return Default_IndexSpec_Consistency -} - -func (m *IndexSpec) GetNamespace() string { - if m != nil && m.Namespace != nil { - return *m.Namespace - } - return "" -} - -func (m *IndexSpec) GetVersion() int32 { - if m != nil && m.Version != nil { - return *m.Version - } - return 0 -} - -func (m *IndexSpec) GetSource() IndexSpec_Source { - if m != nil && m.Source != nil { - return *m.Source - } - return Default_IndexSpec_Source -} - -func (m *IndexSpec) GetMode() IndexSpec_Mode { - if m != nil && m.Mode != nil { - return *m.Mode - } - return Default_IndexSpec_Mode -} - -type IndexMetadata struct { - IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec" json:"index_spec,omitempty"` - Field []*FieldTypes `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"` - Storage *IndexMetadata_Storage `protobuf:"bytes,3,opt,name=storage" json:"storage,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexMetadata) Reset() { *m = IndexMetadata{} } -func (m *IndexMetadata) String() string { return proto.CompactTextString(m) } -func (*IndexMetadata) ProtoMessage() {} - -func (m *IndexMetadata) GetIndexSpec() *IndexSpec { - if m != nil { - return m.IndexSpec - } - return nil -} - -func (m *IndexMetadata) GetField() []*FieldTypes { - if m != nil { - return m.Field - } - return nil -} - -func (m *IndexMetadata) GetStorage() *IndexMetadata_Storage { - if m != nil { - return m.Storage - } - return nil -} - -type IndexMetadata_Storage struct { - AmountUsed *int64 `protobuf:"varint,1,opt,name=amount_used" json:"amount_used,omitempty"` - Limit *int64 `protobuf:"varint,2,opt,name=limit" json:"limit,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexMetadata_Storage) Reset() { *m = IndexMetadata_Storage{} } -func (m *IndexMetadata_Storage) String() string { return proto.CompactTextString(m) } -func (*IndexMetadata_Storage) ProtoMessage() {} - -func (m *IndexMetadata_Storage) GetAmountUsed() int64 { - if m != nil && m.AmountUsed != nil { - return *m.AmountUsed - } - return 0 -} - -func (m *IndexMetadata_Storage) GetLimit() int64 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return 0 -} - -type IndexDocumentParams struct { - Document []*Document `protobuf:"bytes,1,rep,name=document" json:"document,omitempty"` - Freshness *IndexDocumentParams_Freshness `protobuf:"varint,2,opt,name=freshness,enum=search.IndexDocumentParams_Freshness,def=0" json:"freshness,omitempty"` - IndexSpec *IndexSpec `protobuf:"bytes,3,req,name=index_spec" json:"index_spec,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexDocumentParams) Reset() { *m = IndexDocumentParams{} } -func (m *IndexDocumentParams) String() string { return proto.CompactTextString(m) } -func (*IndexDocumentParams) ProtoMessage() {} - -const Default_IndexDocumentParams_Freshness IndexDocumentParams_Freshness = IndexDocumentParams_SYNCHRONOUSLY - -func (m *IndexDocumentParams) GetDocument() []*Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *IndexDocumentParams) GetFreshness() IndexDocumentParams_Freshness { - if m != nil && m.Freshness != nil { - return *m.Freshness - } - return Default_IndexDocumentParams_Freshness -} - -func (m *IndexDocumentParams) GetIndexSpec() *IndexSpec { - if m != nil { - return m.IndexSpec - } - return nil -} - -type IndexDocumentRequest struct { - Params *IndexDocumentParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexDocumentRequest) Reset() { *m = IndexDocumentRequest{} } -func (m *IndexDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*IndexDocumentRequest) ProtoMessage() {} - -func (m *IndexDocumentRequest) GetParams() *IndexDocumentParams { - if m != nil { - return m.Params - } - return nil -} - -func (m *IndexDocumentRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type IndexDocumentResponse struct { - Status []*RequestStatus `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"` - DocId []string `protobuf:"bytes,2,rep,name=doc_id" json:"doc_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *IndexDocumentResponse) Reset() { *m = IndexDocumentResponse{} } -func (m *IndexDocumentResponse) String() string { return proto.CompactTextString(m) } -func (*IndexDocumentResponse) ProtoMessage() {} - -func (m *IndexDocumentResponse) GetStatus() []*RequestStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *IndexDocumentResponse) GetDocId() []string { - if m != nil { - return m.DocId - } - return nil -} - -type DeleteDocumentParams struct { - DocId []string `protobuf:"bytes,1,rep,name=doc_id" json:"doc_id,omitempty"` - IndexSpec *IndexSpec `protobuf:"bytes,2,req,name=index_spec" json:"index_spec,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteDocumentParams) Reset() { *m = DeleteDocumentParams{} } -func (m *DeleteDocumentParams) String() string { return proto.CompactTextString(m) } -func (*DeleteDocumentParams) ProtoMessage() {} - -func (m *DeleteDocumentParams) GetDocId() []string { - if m != nil { - return m.DocId - } - return nil -} - -func (m *DeleteDocumentParams) GetIndexSpec() *IndexSpec { - if m != nil { - return m.IndexSpec - } - return nil -} - -type DeleteDocumentRequest struct { - Params *DeleteDocumentParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteDocumentRequest) Reset() { *m = DeleteDocumentRequest{} } -func (m *DeleteDocumentRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteDocumentRequest) ProtoMessage() {} - -func (m *DeleteDocumentRequest) GetParams() *DeleteDocumentParams { - if m != nil { - return m.Params - } - return nil -} - -func (m *DeleteDocumentRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type DeleteDocumentResponse struct { - Status []*RequestStatus `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteDocumentResponse) Reset() { *m = DeleteDocumentResponse{} } -func (m *DeleteDocumentResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteDocumentResponse) ProtoMessage() {} - -func (m *DeleteDocumentResponse) GetStatus() []*RequestStatus { - if m != nil { - return m.Status - } - return nil -} - -type ListDocumentsParams struct { - IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec" json:"index_spec,omitempty"` - StartDocId *string `protobuf:"bytes,2,opt,name=start_doc_id" json:"start_doc_id,omitempty"` - IncludeStartDoc *bool `protobuf:"varint,3,opt,name=include_start_doc,def=1" json:"include_start_doc,omitempty"` - Limit *int32 `protobuf:"varint,4,opt,name=limit,def=100" json:"limit,omitempty"` - KeysOnly *bool `protobuf:"varint,5,opt,name=keys_only" json:"keys_only,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ListDocumentsParams) Reset() { *m = ListDocumentsParams{} } -func (m *ListDocumentsParams) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsParams) ProtoMessage() {} - -const Default_ListDocumentsParams_IncludeStartDoc bool = true -const Default_ListDocumentsParams_Limit int32 = 100 - -func (m *ListDocumentsParams) GetIndexSpec() *IndexSpec { - if m != nil { - return m.IndexSpec - } - return nil -} - -func (m *ListDocumentsParams) GetStartDocId() string { - if m != nil && m.StartDocId != nil { - return *m.StartDocId - } - return "" -} - -func (m *ListDocumentsParams) GetIncludeStartDoc() bool { - if m != nil && m.IncludeStartDoc != nil { - return *m.IncludeStartDoc - } - return Default_ListDocumentsParams_IncludeStartDoc -} - -func (m *ListDocumentsParams) GetLimit() int32 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return Default_ListDocumentsParams_Limit -} - -func (m *ListDocumentsParams) GetKeysOnly() bool { - if m != nil && m.KeysOnly != nil { - return *m.KeysOnly - } - return false -} - -type ListDocumentsRequest struct { - Params *ListDocumentsParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,2,opt,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ListDocumentsRequest) Reset() { *m = ListDocumentsRequest{} } -func (m *ListDocumentsRequest) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsRequest) ProtoMessage() {} - -func (m *ListDocumentsRequest) GetParams() *ListDocumentsParams { - if m != nil { - return m.Params - } - return nil -} - -func (m *ListDocumentsRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type ListDocumentsResponse struct { - Status *RequestStatus `protobuf:"bytes,1,req,name=status" json:"status,omitempty"` - Document []*Document `protobuf:"bytes,2,rep,name=document" json:"document,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ListDocumentsResponse) Reset() { *m = ListDocumentsResponse{} } -func (m *ListDocumentsResponse) String() string { return proto.CompactTextString(m) } -func (*ListDocumentsResponse) ProtoMessage() {} - -func (m *ListDocumentsResponse) GetStatus() *RequestStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *ListDocumentsResponse) GetDocument() []*Document { - if m != nil { - return m.Document - } - return nil -} - -type ListIndexesParams struct { - FetchSchema *bool `protobuf:"varint,1,opt,name=fetch_schema" json:"fetch_schema,omitempty"` - Limit *int32 `protobuf:"varint,2,opt,name=limit,def=20" json:"limit,omitempty"` - Namespace *string `protobuf:"bytes,3,opt,name=namespace" json:"namespace,omitempty"` - StartIndexName *string `protobuf:"bytes,4,opt,name=start_index_name" json:"start_index_name,omitempty"` - IncludeStartIndex *bool `protobuf:"varint,5,opt,name=include_start_index,def=1" json:"include_start_index,omitempty"` - IndexNamePrefix *string `protobuf:"bytes,6,opt,name=index_name_prefix" json:"index_name_prefix,omitempty"` - Offset *int32 `protobuf:"varint,7,opt,name=offset" json:"offset,omitempty"` - Source *IndexSpec_Source `protobuf:"varint,8,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ListIndexesParams) Reset() { *m = ListIndexesParams{} } -func (m *ListIndexesParams) String() string { return proto.CompactTextString(m) } -func (*ListIndexesParams) ProtoMessage() {} - -const Default_ListIndexesParams_Limit int32 = 20 -const Default_ListIndexesParams_IncludeStartIndex bool = true -const Default_ListIndexesParams_Source IndexSpec_Source = IndexSpec_SEARCH - -func (m *ListIndexesParams) GetFetchSchema() bool { - if m != nil && m.FetchSchema != nil { - return *m.FetchSchema - } - return false -} - -func (m *ListIndexesParams) GetLimit() int32 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return Default_ListIndexesParams_Limit -} - -func (m *ListIndexesParams) GetNamespace() string { - if m != nil && m.Namespace != nil { - return *m.Namespace - } - return "" -} - -func (m *ListIndexesParams) GetStartIndexName() string { - if m != nil && m.StartIndexName != nil { - return *m.StartIndexName - } - return "" -} - -func (m *ListIndexesParams) GetIncludeStartIndex() bool { - if m != nil && m.IncludeStartIndex != nil { - return *m.IncludeStartIndex - } - return Default_ListIndexesParams_IncludeStartIndex -} - -func (m *ListIndexesParams) GetIndexNamePrefix() string { - if m != nil && m.IndexNamePrefix != nil { - return *m.IndexNamePrefix - } - return "" -} - -func (m *ListIndexesParams) GetOffset() int32 { - if m != nil && m.Offset != nil { - return *m.Offset - } - return 0 -} - -func (m *ListIndexesParams) GetSource() IndexSpec_Source { - if m != nil && m.Source != nil { - return *m.Source - } - return Default_ListIndexesParams_Source -} - -type ListIndexesRequest struct { - Params *ListIndexesParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ListIndexesRequest) Reset() { *m = ListIndexesRequest{} } -func (m *ListIndexesRequest) String() string { return proto.CompactTextString(m) } -func (*ListIndexesRequest) ProtoMessage() {} - -func (m *ListIndexesRequest) GetParams() *ListIndexesParams { - if m != nil { - return m.Params - } - return nil -} - -func (m *ListIndexesRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type ListIndexesResponse struct { - Status *RequestStatus `protobuf:"bytes,1,req,name=status" json:"status,omitempty"` - IndexMetadata []*IndexMetadata `protobuf:"bytes,2,rep,name=index_metadata" json:"index_metadata,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ListIndexesResponse) Reset() { *m = ListIndexesResponse{} } -func (m *ListIndexesResponse) String() string { return proto.CompactTextString(m) } -func (*ListIndexesResponse) ProtoMessage() {} - -func (m *ListIndexesResponse) GetStatus() *RequestStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *ListIndexesResponse) GetIndexMetadata() []*IndexMetadata { - if m != nil { - return m.IndexMetadata - } - return nil -} - -type DeleteSchemaParams struct { - Source *IndexSpec_Source `protobuf:"varint,1,opt,name=source,enum=search.IndexSpec_Source,def=0" json:"source,omitempty"` - IndexSpec []*IndexSpec `protobuf:"bytes,2,rep,name=index_spec" json:"index_spec,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteSchemaParams) Reset() { *m = DeleteSchemaParams{} } -func (m *DeleteSchemaParams) String() string { return proto.CompactTextString(m) } -func (*DeleteSchemaParams) ProtoMessage() {} - -const Default_DeleteSchemaParams_Source IndexSpec_Source = IndexSpec_SEARCH - -func (m *DeleteSchemaParams) GetSource() IndexSpec_Source { - if m != nil && m.Source != nil { - return *m.Source - } - return Default_DeleteSchemaParams_Source -} - -func (m *DeleteSchemaParams) GetIndexSpec() []*IndexSpec { - if m != nil { - return m.IndexSpec - } - return nil -} - -type DeleteSchemaRequest struct { - Params *DeleteSchemaParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteSchemaRequest) Reset() { *m = DeleteSchemaRequest{} } -func (m *DeleteSchemaRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteSchemaRequest) ProtoMessage() {} - -func (m *DeleteSchemaRequest) GetParams() *DeleteSchemaParams { - if m != nil { - return m.Params - } - return nil -} - -func (m *DeleteSchemaRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type DeleteSchemaResponse struct { - Status []*RequestStatus `protobuf:"bytes,1,rep,name=status" json:"status,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *DeleteSchemaResponse) Reset() { *m = DeleteSchemaResponse{} } -func (m *DeleteSchemaResponse) String() string { return proto.CompactTextString(m) } -func (*DeleteSchemaResponse) ProtoMessage() {} - -func (m *DeleteSchemaResponse) GetStatus() []*RequestStatus { - if m != nil { - return m.Status - } - return nil -} - -type SortSpec struct { - SortExpression *string `protobuf:"bytes,1,req,name=sort_expression" json:"sort_expression,omitempty"` - SortDescending *bool `protobuf:"varint,2,opt,name=sort_descending,def=1" json:"sort_descending,omitempty"` - DefaultValueText *string `protobuf:"bytes,4,opt,name=default_value_text" json:"default_value_text,omitempty"` - DefaultValueNumeric *float64 `protobuf:"fixed64,5,opt,name=default_value_numeric" json:"default_value_numeric,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SortSpec) Reset() { *m = SortSpec{} } -func (m *SortSpec) String() string { return proto.CompactTextString(m) } -func (*SortSpec) ProtoMessage() {} - -const Default_SortSpec_SortDescending bool = true - -func (m *SortSpec) GetSortExpression() string { - if m != nil && m.SortExpression != nil { - return *m.SortExpression - } - return "" -} - -func (m *SortSpec) GetSortDescending() bool { - if m != nil && m.SortDescending != nil { - return *m.SortDescending - } - return Default_SortSpec_SortDescending -} - -func (m *SortSpec) GetDefaultValueText() string { - if m != nil && m.DefaultValueText != nil { - return *m.DefaultValueText - } - return "" -} - -func (m *SortSpec) GetDefaultValueNumeric() float64 { - if m != nil && m.DefaultValueNumeric != nil { - return *m.DefaultValueNumeric - } - return 0 -} - -type ScorerSpec struct { - Scorer *ScorerSpec_Scorer `protobuf:"varint,1,opt,name=scorer,enum=search.ScorerSpec_Scorer,def=2" json:"scorer,omitempty"` - Limit *int32 `protobuf:"varint,2,opt,name=limit,def=1000" json:"limit,omitempty"` - MatchScorerParameters *string `protobuf:"bytes,9,opt,name=match_scorer_parameters" json:"match_scorer_parameters,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *ScorerSpec) Reset() { *m = ScorerSpec{} } -func (m *ScorerSpec) String() string { return proto.CompactTextString(m) } -func (*ScorerSpec) ProtoMessage() {} - -const Default_ScorerSpec_Scorer ScorerSpec_Scorer = ScorerSpec_MATCH_SCORER -const Default_ScorerSpec_Limit int32 = 1000 - -func (m *ScorerSpec) GetScorer() ScorerSpec_Scorer { - if m != nil && m.Scorer != nil { - return *m.Scorer - } - return Default_ScorerSpec_Scorer -} - -func (m *ScorerSpec) GetLimit() int32 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return Default_ScorerSpec_Limit -} - -func (m *ScorerSpec) GetMatchScorerParameters() string { - if m != nil && m.MatchScorerParameters != nil { - return *m.MatchScorerParameters - } - return "" -} - -type FieldSpec struct { - Name []string `protobuf:"bytes,1,rep,name=name" json:"name,omitempty"` - Expression []*FieldSpec_Expression `protobuf:"group,2,rep" json:"expression,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FieldSpec) Reset() { *m = FieldSpec{} } -func (m *FieldSpec) String() string { return proto.CompactTextString(m) } -func (*FieldSpec) ProtoMessage() {} - -func (m *FieldSpec) GetName() []string { - if m != nil { - return m.Name - } - return nil -} - -func (m *FieldSpec) GetExpression() []*FieldSpec_Expression { - if m != nil { - return m.Expression - } - return nil -} - -type FieldSpec_Expression struct { - Name *string `protobuf:"bytes,3,req,name=name" json:"name,omitempty"` - Expression *string `protobuf:"bytes,4,req,name=expression" json:"expression,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FieldSpec_Expression) Reset() { *m = FieldSpec_Expression{} } -func (m *FieldSpec_Expression) String() string { return proto.CompactTextString(m) } -func (*FieldSpec_Expression) ProtoMessage() {} - -func (m *FieldSpec_Expression) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *FieldSpec_Expression) GetExpression() string { - if m != nil && m.Expression != nil { - return *m.Expression - } - return "" -} - -type FacetRange struct { - Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` - Start *string `protobuf:"bytes,2,opt,name=start" json:"start,omitempty"` - End *string `protobuf:"bytes,3,opt,name=end" json:"end,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetRange) Reset() { *m = FacetRange{} } -func (m *FacetRange) String() string { return proto.CompactTextString(m) } -func (*FacetRange) ProtoMessage() {} - -func (m *FacetRange) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *FacetRange) GetStart() string { - if m != nil && m.Start != nil { - return *m.Start - } - return "" -} - -func (m *FacetRange) GetEnd() string { - if m != nil && m.End != nil { - return *m.End - } - return "" -} - -type FacetRequestParam struct { - ValueLimit *int32 `protobuf:"varint,1,opt,name=value_limit" json:"value_limit,omitempty"` - Range []*FacetRange `protobuf:"bytes,2,rep,name=range" json:"range,omitempty"` - ValueConstraint []string `protobuf:"bytes,3,rep,name=value_constraint" json:"value_constraint,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetRequestParam) Reset() { *m = FacetRequestParam{} } -func (m *FacetRequestParam) String() string { return proto.CompactTextString(m) } -func (*FacetRequestParam) ProtoMessage() {} - -func (m *FacetRequestParam) GetValueLimit() int32 { - if m != nil && m.ValueLimit != nil { - return *m.ValueLimit - } - return 0 -} - -func (m *FacetRequestParam) GetRange() []*FacetRange { - if m != nil { - return m.Range - } - return nil -} - -func (m *FacetRequestParam) GetValueConstraint() []string { - if m != nil { - return m.ValueConstraint - } - return nil -} - -type FacetAutoDetectParam struct { - ValueLimit *int32 `protobuf:"varint,1,opt,name=value_limit,def=10" json:"value_limit,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetAutoDetectParam) Reset() { *m = FacetAutoDetectParam{} } -func (m *FacetAutoDetectParam) String() string { return proto.CompactTextString(m) } -func (*FacetAutoDetectParam) ProtoMessage() {} - -const Default_FacetAutoDetectParam_ValueLimit int32 = 10 - -func (m *FacetAutoDetectParam) GetValueLimit() int32 { - if m != nil && m.ValueLimit != nil { - return *m.ValueLimit - } - return Default_FacetAutoDetectParam_ValueLimit -} - -type FacetRequest struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Type *FacetValue_ContentType `protobuf:"varint,2,req,name=type,enum=search.FacetValue_ContentType" json:"type,omitempty"` - Params *FacetRequestParam `protobuf:"bytes,3,opt,name=params" json:"params,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetRequest) Reset() { *m = FacetRequest{} } -func (m *FacetRequest) String() string { return proto.CompactTextString(m) } -func (*FacetRequest) ProtoMessage() {} - -func (m *FacetRequest) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *FacetRequest) GetType() FacetValue_ContentType { - if m != nil && m.Type != nil { - return *m.Type - } - return FacetValue_ATOM -} - -func (m *FacetRequest) GetParams() *FacetRequestParam { - if m != nil { - return m.Params - } - return nil -} - -type FacetRefine struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Type *FacetValue_ContentType `protobuf:"varint,2,req,name=type,enum=search.FacetValue_ContentType" json:"type,omitempty"` - Value *string `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` - Start *string `protobuf:"bytes,4,opt,name=start" json:"start,omitempty"` - End *string `protobuf:"bytes,5,opt,name=end" json:"end,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetRefine) Reset() { *m = FacetRefine{} } -func (m *FacetRefine) String() string { return proto.CompactTextString(m) } -func (*FacetRefine) ProtoMessage() {} - -func (m *FacetRefine) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *FacetRefine) GetType() FacetValue_ContentType { - if m != nil && m.Type != nil { - return *m.Type - } - return FacetValue_ATOM -} - -func (m *FacetRefine) GetValue() string { - if m != nil && m.Value != nil { - return *m.Value - } - return "" -} - -func (m *FacetRefine) GetStart() string { - if m != nil && m.Start != nil { - return *m.Start - } - return "" -} - -func (m *FacetRefine) GetEnd() string { - if m != nil && m.End != nil { - return *m.End - } - return "" -} - -type SearchParams struct { - IndexSpec *IndexSpec `protobuf:"bytes,1,req,name=index_spec" json:"index_spec,omitempty"` - Query *string `protobuf:"bytes,2,req,name=query" json:"query,omitempty"` - Cursor *string `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"` - Offset *int32 `protobuf:"varint,11,opt,name=offset" json:"offset,omitempty"` - CursorType *SearchParams_CursorType `protobuf:"varint,5,opt,name=cursor_type,enum=search.SearchParams_CursorType,def=0" json:"cursor_type,omitempty"` - Limit *int32 `protobuf:"varint,6,opt,name=limit,def=20" json:"limit,omitempty"` - MatchedCountAccuracy *int32 `protobuf:"varint,7,opt,name=matched_count_accuracy" json:"matched_count_accuracy,omitempty"` - SortSpec []*SortSpec `protobuf:"bytes,8,rep,name=sort_spec" json:"sort_spec,omitempty"` - ScorerSpec *ScorerSpec `protobuf:"bytes,9,opt,name=scorer_spec" json:"scorer_spec,omitempty"` - FieldSpec *FieldSpec `protobuf:"bytes,10,opt,name=field_spec" json:"field_spec,omitempty"` - KeysOnly *bool `protobuf:"varint,12,opt,name=keys_only" json:"keys_only,omitempty"` - ParsingMode *SearchParams_ParsingMode `protobuf:"varint,13,opt,name=parsing_mode,enum=search.SearchParams_ParsingMode,def=0" json:"parsing_mode,omitempty"` - AutoDiscoverFacetCount *int32 `protobuf:"varint,15,opt,name=auto_discover_facet_count,def=0" json:"auto_discover_facet_count,omitempty"` - IncludeFacet []*FacetRequest `protobuf:"bytes,16,rep,name=include_facet" json:"include_facet,omitempty"` - FacetRefine []*FacetRefine `protobuf:"bytes,17,rep,name=facet_refine" json:"facet_refine,omitempty"` - FacetAutoDetectParam *FacetAutoDetectParam `protobuf:"bytes,18,opt,name=facet_auto_detect_param" json:"facet_auto_detect_param,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SearchParams) Reset() { *m = SearchParams{} } -func (m *SearchParams) String() string { return proto.CompactTextString(m) } -func (*SearchParams) ProtoMessage() {} - -const Default_SearchParams_CursorType SearchParams_CursorType = SearchParams_NONE -const Default_SearchParams_Limit int32 = 20 -const Default_SearchParams_ParsingMode SearchParams_ParsingMode = SearchParams_STRICT -const Default_SearchParams_AutoDiscoverFacetCount int32 = 0 - -func (m *SearchParams) GetIndexSpec() *IndexSpec { - if m != nil { - return m.IndexSpec - } - return nil -} - -func (m *SearchParams) GetQuery() string { - if m != nil && m.Query != nil { - return *m.Query - } - return "" -} - -func (m *SearchParams) GetCursor() string { - if m != nil && m.Cursor != nil { - return *m.Cursor - } - return "" -} - -func (m *SearchParams) GetOffset() int32 { - if m != nil && m.Offset != nil { - return *m.Offset - } - return 0 -} - -func (m *SearchParams) GetCursorType() SearchParams_CursorType { - if m != nil && m.CursorType != nil { - return *m.CursorType - } - return Default_SearchParams_CursorType -} - -func (m *SearchParams) GetLimit() int32 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return Default_SearchParams_Limit -} - -func (m *SearchParams) GetMatchedCountAccuracy() int32 { - if m != nil && m.MatchedCountAccuracy != nil { - return *m.MatchedCountAccuracy - } - return 0 -} - -func (m *SearchParams) GetSortSpec() []*SortSpec { - if m != nil { - return m.SortSpec - } - return nil -} - -func (m *SearchParams) GetScorerSpec() *ScorerSpec { - if m != nil { - return m.ScorerSpec - } - return nil -} - -func (m *SearchParams) GetFieldSpec() *FieldSpec { - if m != nil { - return m.FieldSpec - } - return nil -} - -func (m *SearchParams) GetKeysOnly() bool { - if m != nil && m.KeysOnly != nil { - return *m.KeysOnly - } - return false -} - -func (m *SearchParams) GetParsingMode() SearchParams_ParsingMode { - if m != nil && m.ParsingMode != nil { - return *m.ParsingMode - } - return Default_SearchParams_ParsingMode -} - -func (m *SearchParams) GetAutoDiscoverFacetCount() int32 { - if m != nil && m.AutoDiscoverFacetCount != nil { - return *m.AutoDiscoverFacetCount - } - return Default_SearchParams_AutoDiscoverFacetCount -} - -func (m *SearchParams) GetIncludeFacet() []*FacetRequest { - if m != nil { - return m.IncludeFacet - } - return nil -} - -func (m *SearchParams) GetFacetRefine() []*FacetRefine { - if m != nil { - return m.FacetRefine - } - return nil -} - -func (m *SearchParams) GetFacetAutoDetectParam() *FacetAutoDetectParam { - if m != nil { - return m.FacetAutoDetectParam - } - return nil -} - -type SearchRequest struct { - Params *SearchParams `protobuf:"bytes,1,req,name=params" json:"params,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SearchRequest) Reset() { *m = SearchRequest{} } -func (m *SearchRequest) String() string { return proto.CompactTextString(m) } -func (*SearchRequest) ProtoMessage() {} - -func (m *SearchRequest) GetParams() *SearchParams { - if m != nil { - return m.Params - } - return nil -} - -func (m *SearchRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type FacetResultValue struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Count *int32 `protobuf:"varint,2,req,name=count" json:"count,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetResultValue) Reset() { *m = FacetResultValue{} } -func (m *FacetResultValue) String() string { return proto.CompactTextString(m) } -func (*FacetResultValue) ProtoMessage() {} - -func (m *FacetResultValue) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *FacetResultValue) GetCount() int32 { - if m != nil && m.Count != nil { - return *m.Count - } - return 0 -} - -type FacetResult struct { - Name *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"` - Type *FacetValue_ContentType `protobuf:"varint,2,req,name=type,enum=search.FacetValue_ContentType" json:"type,omitempty"` - Value []*FacetResultValue `protobuf:"bytes,3,rep,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *FacetResult) Reset() { *m = FacetResult{} } -func (m *FacetResult) String() string { return proto.CompactTextString(m) } -func (*FacetResult) ProtoMessage() {} - -func (m *FacetResult) GetName() string { - if m != nil && m.Name != nil { - return *m.Name - } - return "" -} - -func (m *FacetResult) GetType() FacetValue_ContentType { - if m != nil && m.Type != nil { - return *m.Type - } - return FacetValue_ATOM -} - -func (m *FacetResult) GetValue() []*FacetResultValue { - if m != nil { - return m.Value - } - return nil -} - -type SearchResult struct { - Document *Document `protobuf:"bytes,1,req,name=document" json:"document,omitempty"` - Expression []*Field `protobuf:"bytes,4,rep,name=expression" json:"expression,omitempty"` - Score []float64 `protobuf:"fixed64,2,rep,name=score" json:"score,omitempty"` - Cursor *string `protobuf:"bytes,3,opt,name=cursor" json:"cursor,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SearchResult) Reset() { *m = SearchResult{} } -func (m *SearchResult) String() string { return proto.CompactTextString(m) } -func (*SearchResult) ProtoMessage() {} - -func (m *SearchResult) GetDocument() *Document { - if m != nil { - return m.Document - } - return nil -} - -func (m *SearchResult) GetExpression() []*Field { - if m != nil { - return m.Expression - } - return nil -} - -func (m *SearchResult) GetScore() []float64 { - if m != nil { - return m.Score - } - return nil -} - -func (m *SearchResult) GetCursor() string { - if m != nil && m.Cursor != nil { - return *m.Cursor - } - return "" -} - -type SearchResponse struct { - Result []*SearchResult `protobuf:"bytes,1,rep,name=result" json:"result,omitempty"` - MatchedCount *int64 `protobuf:"varint,2,req,name=matched_count" json:"matched_count,omitempty"` - Status *RequestStatus `protobuf:"bytes,3,req,name=status" json:"status,omitempty"` - Cursor *string `protobuf:"bytes,4,opt,name=cursor" json:"cursor,omitempty"` - FacetResult []*FacetResult `protobuf:"bytes,5,rep,name=facet_result" json:"facet_result,omitempty"` - XXX_extensions map[int32]proto.Extension `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *SearchResponse) Reset() { *m = SearchResponse{} } -func (m *SearchResponse) String() string { return proto.CompactTextString(m) } -func (*SearchResponse) ProtoMessage() {} - -var extRange_SearchResponse = []proto.ExtensionRange{ - {1000, 9999}, -} - -func (*SearchResponse) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_SearchResponse -} -func (m *SearchResponse) ExtensionMap() map[int32]proto.Extension { - if m.XXX_extensions == nil { - m.XXX_extensions = make(map[int32]proto.Extension) - } - return m.XXX_extensions -} - -func (m *SearchResponse) GetResult() []*SearchResult { - if m != nil { - return m.Result - } - return nil -} - -func (m *SearchResponse) GetMatchedCount() int64 { - if m != nil && m.MatchedCount != nil { - return *m.MatchedCount - } - return 0 -} - -func (m *SearchResponse) GetStatus() *RequestStatus { - if m != nil { - return m.Status - } - return nil -} - -func (m *SearchResponse) GetCursor() string { - if m != nil && m.Cursor != nil { - return *m.Cursor - } - return "" -} - -func (m *SearchResponse) GetFacetResult() []*FacetResult { - if m != nil { - return m.FacetResult - } - return nil -} - -func init() { - proto.RegisterEnum("search.Scope_Type", Scope_Type_name, Scope_Type_value) - proto.RegisterEnum("search.Entry_Permission", Entry_Permission_name, Entry_Permission_value) - proto.RegisterEnum("search.FieldValue_ContentType", FieldValue_ContentType_name, FieldValue_ContentType_value) - proto.RegisterEnum("search.FacetValue_ContentType", FacetValue_ContentType_name, FacetValue_ContentType_value) - proto.RegisterEnum("search.Document_Storage", Document_Storage_name, Document_Storage_value) - proto.RegisterEnum("search.SearchServiceError_ErrorCode", SearchServiceError_ErrorCode_name, SearchServiceError_ErrorCode_value) - proto.RegisterEnum("search.IndexSpec_Consistency", IndexSpec_Consistency_name, IndexSpec_Consistency_value) - proto.RegisterEnum("search.IndexSpec_Source", IndexSpec_Source_name, IndexSpec_Source_value) - proto.RegisterEnum("search.IndexSpec_Mode", IndexSpec_Mode_name, IndexSpec_Mode_value) - proto.RegisterEnum("search.IndexDocumentParams_Freshness", IndexDocumentParams_Freshness_name, IndexDocumentParams_Freshness_value) - proto.RegisterEnum("search.ScorerSpec_Scorer", ScorerSpec_Scorer_name, ScorerSpec_Scorer_value) - proto.RegisterEnum("search.SearchParams_CursorType", SearchParams_CursorType_name, SearchParams_CursorType_value) - proto.RegisterEnum("search.SearchParams_ParsingMode", SearchParams_ParsingMode_name, SearchParams_ParsingMode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.proto deleted file mode 100644 index 62998413720..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/search/search.proto +++ /dev/null @@ -1,376 +0,0 @@ -syntax = "proto2"; -option go_package = "search"; - -package search; - -message Scope { - enum Type { - USER_BY_CANONICAL_ID = 1; - USER_BY_EMAIL = 2; - GROUP_BY_CANONICAL_ID = 3; - GROUP_BY_EMAIL = 4; - GROUP_BY_DOMAIN = 5; - ALL_USERS = 6; - ALL_AUTHENTICATED_USERS = 7; - } - - optional Type type = 1; - optional string value = 2; -} - -message Entry { - enum Permission { - READ = 1; - WRITE = 2; - FULL_CONTROL = 3; - } - - optional Scope scope = 1; - optional Permission permission = 2; - optional string display_name = 3; -} - -message AccessControlList { - optional string owner = 1; - repeated Entry entries = 2; -} - -message FieldValue { - enum ContentType { - TEXT = 0; - HTML = 1; - ATOM = 2; - DATE = 3; - NUMBER = 4; - GEO = 5; - } - - optional ContentType type = 1 [default = TEXT]; - - optional string language = 2 [default = "en"]; - - optional string string_value = 3; - - optional group Geo = 4 { - required double lat = 5; - required double lng = 6; - } -} - -message Field { - required string name = 1; - required FieldValue value = 2; -} - -message FieldTypes { - required string name = 1; - repeated FieldValue.ContentType type = 2; -} - -message FacetValue { - enum ContentType { - ATOM = 2; - DATE = 3; - NUMBER = 4; - } - - optional ContentType type = 1 [default = ATOM]; - optional string string_value = 3; -} - -message Facet { - required string name = 1; - required FacetValue value = 2; -} - - -message Document { - optional string id = 1; - optional string language = 2 [default = "en"]; - repeated Field field = 3; - optional int32 order_id = 4; - - enum Storage { - DISK = 0; - } - - optional Storage storage = 5 [default = DISK]; - optional AccessControlList acl = 6; - optional int64 version = 7; - repeated Facet facet = 8; -} - -message SearchServiceError { - enum ErrorCode { - OK = 0; - INVALID_REQUEST = 1; - TRANSIENT_ERROR = 2; - INTERNAL_ERROR = 3; - PERMISSION_DENIED = 4; - TIMEOUT = 5; - CONCURRENT_TRANSACTION = 6; - } -} - -message RequestStatus { - required SearchServiceError.ErrorCode code = 1; - optional string error_detail = 2; -} - -message IndexSpec { - required string name = 1; - - enum Consistency { - GLOBAL = 0; - PER_DOCUMENT = 1; - } - optional Consistency consistency = 2 [default = PER_DOCUMENT]; - - optional string namespace = 3; - optional int32 version = 4; - - enum Source { - SEARCH = 0; - DATASTORE = 1; - CLOUD_STORAGE = 2; - } - optional Source source = 5 [default = SEARCH]; - - enum Mode { - PRIORITY = 0; - BACKGROUND = 1; - } - optional Mode mode = 6 [default = PRIORITY]; -} - -message IndexMetadata { - required IndexSpec index_spec = 1; - - repeated FieldTypes field = 2; - - message Storage { - optional int64 amount_used = 1; - optional int64 limit = 2; - } - optional Storage storage = 3; -} - -message IndexDocumentParams { - repeated Document document = 1; - - enum Freshness { - SYNCHRONOUSLY = 0; - WHEN_CONVENIENT = 1; - } - optional Freshness freshness = 2 [default = SYNCHRONOUSLY, deprecated=true]; - - required IndexSpec index_spec = 3; -} - -message IndexDocumentRequest { - required IndexDocumentParams params = 1; - - optional bytes app_id = 3; -} - -message IndexDocumentResponse { - repeated RequestStatus status = 1; - - repeated string doc_id = 2; -} - -message DeleteDocumentParams { - repeated string doc_id = 1; - - required IndexSpec index_spec = 2; -} - -message DeleteDocumentRequest { - required DeleteDocumentParams params = 1; - - optional bytes app_id = 3; -} - -message DeleteDocumentResponse { - repeated RequestStatus status = 1; -} - -message ListDocumentsParams { - required IndexSpec index_spec = 1; - optional string start_doc_id = 2; - optional bool include_start_doc = 3 [default = true]; - optional int32 limit = 4 [default = 100]; - optional bool keys_only = 5; -} - -message ListDocumentsRequest { - required ListDocumentsParams params = 1; - - optional bytes app_id = 2; -} - -message ListDocumentsResponse { - required RequestStatus status = 1; - - repeated Document document = 2; -} - -message ListIndexesParams { - optional bool fetch_schema = 1; - optional int32 limit = 2 [default = 20]; - optional string namespace = 3; - optional string start_index_name = 4; - optional bool include_start_index = 5 [default = true]; - optional string index_name_prefix = 6; - optional int32 offset = 7; - optional IndexSpec.Source source = 8 [default = SEARCH]; -} - -message ListIndexesRequest { - required ListIndexesParams params = 1; - - optional bytes app_id = 3; -} - -message ListIndexesResponse { - required RequestStatus status = 1; - repeated IndexMetadata index_metadata = 2; -} - -message DeleteSchemaParams { - optional IndexSpec.Source source = 1 [default = SEARCH]; - repeated IndexSpec index_spec = 2; -} - -message DeleteSchemaRequest { - required DeleteSchemaParams params = 1; - - optional bytes app_id = 3; -} - -message DeleteSchemaResponse { - repeated RequestStatus status = 1; -} - -message SortSpec { - required string sort_expression = 1; - optional bool sort_descending = 2 [default = true]; - optional string default_value_text = 4; - optional double default_value_numeric = 5; -} - -message ScorerSpec { - enum Scorer { - RESCORING_MATCH_SCORER = 0; - MATCH_SCORER = 2; - } - optional Scorer scorer = 1 [default = MATCH_SCORER]; - - optional int32 limit = 2 [default = 1000]; - optional string match_scorer_parameters = 9; -} - -message FieldSpec { - repeated string name = 1; - - repeated group Expression = 2 { - required string name = 3; - required string expression = 4; - } -} - -message FacetRange { - optional string name = 1; - optional string start = 2; - optional string end = 3; -} - -message FacetRequestParam { - optional int32 value_limit = 1; - repeated FacetRange range = 2; - repeated string value_constraint = 3; -} - -message FacetAutoDetectParam { - optional int32 value_limit = 1 [default = 10]; -} - -message FacetRequest { - required string name = 1; - required FacetValue.ContentType type = 2; - optional FacetRequestParam params = 3; -} - -message FacetRefine { - required string name = 1; - required FacetValue.ContentType type = 2; - optional string value = 3; - optional string start = 4; - optional string end = 5; -} - -message SearchParams { - required IndexSpec index_spec = 1; - required string query = 2; - optional string cursor = 4; - optional int32 offset = 11; - - enum CursorType { - NONE = 0; - SINGLE = 1; - PER_RESULT = 2; - } - optional CursorType cursor_type = 5 [default = NONE]; - - optional int32 limit = 6 [default = 20]; - optional int32 matched_count_accuracy = 7; - repeated SortSpec sort_spec = 8; - optional ScorerSpec scorer_spec = 9; - optional FieldSpec field_spec = 10; - optional bool keys_only = 12; - - enum ParsingMode { - STRICT = 0; - RELAXED = 1; - } - optional ParsingMode parsing_mode = 13 [default = STRICT]; - - optional int32 auto_discover_facet_count = 15 [default = 0]; - repeated FacetRequest include_facet = 16; - repeated FacetRefine facet_refine = 17; - optional FacetAutoDetectParam facet_auto_detect_param = 18; -} - -message SearchRequest { - required SearchParams params = 1; - - optional bytes app_id = 3; -} - -message FacetResultValue { - required string name = 1; - required int32 count = 2; -} - -message FacetResult { - required string name = 1; - required FacetValue.ContentType type = 2; - repeated FacetResultValue value = 3; -} - -message SearchResult { - required Document document = 1; - repeated Field expression = 4; - repeated double score = 2; - optional string cursor = 3; -} - -message SearchResponse { - repeated SearchResult result = 1; - required int64 matched_count = 2; - required RequestStatus status = 3; - optional string cursor = 4; - repeated FacetResult facet_result = 5; - - extensions 1000 to 9999; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.pb.go deleted file mode 100644 index 1da0ae3ae24..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.pb.go +++ /dev/null @@ -1,1890 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto -// DO NOT EDIT! - -/* -Package taskqueue is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto - -It has these top-level messages: - TaskQueueServiceError - TaskPayload - TaskQueueRetryParameters - TaskQueueAcl - TaskQueueHttpHeader - TaskQueueMode - TaskQueueAddRequest - TaskQueueAddResponse - TaskQueueBulkAddRequest - TaskQueueBulkAddResponse - TaskQueueDeleteRequest - TaskQueueDeleteResponse - TaskQueueForceRunRequest - TaskQueueForceRunResponse - TaskQueueUpdateQueueRequest - TaskQueueUpdateQueueResponse - TaskQueueFetchQueuesRequest - TaskQueueFetchQueuesResponse - TaskQueueFetchQueueStatsRequest - TaskQueueScannerQueueInfo - TaskQueueFetchQueueStatsResponse - TaskQueuePauseQueueRequest - TaskQueuePauseQueueResponse - TaskQueuePurgeQueueRequest - TaskQueuePurgeQueueResponse - TaskQueueDeleteQueueRequest - TaskQueueDeleteQueueResponse - TaskQueueDeleteGroupRequest - TaskQueueDeleteGroupResponse - TaskQueueQueryTasksRequest - TaskQueueQueryTasksResponse - TaskQueueFetchTaskRequest - TaskQueueFetchTaskResponse - TaskQueueUpdateStorageLimitRequest - TaskQueueUpdateStorageLimitResponse - TaskQueueQueryAndOwnTasksRequest - TaskQueueQueryAndOwnTasksResponse - TaskQueueModifyTaskLeaseRequest - TaskQueueModifyTaskLeaseResponse -*/ -package taskqueue - -import proto "github.com/golang/protobuf/proto" -import math "math" -import appengine "google.golang.org/appengine/internal/datastore" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type TaskQueueServiceError_ErrorCode int32 - -const ( - TaskQueueServiceError_OK TaskQueueServiceError_ErrorCode = 0 - TaskQueueServiceError_UNKNOWN_QUEUE TaskQueueServiceError_ErrorCode = 1 - TaskQueueServiceError_TRANSIENT_ERROR TaskQueueServiceError_ErrorCode = 2 - TaskQueueServiceError_INTERNAL_ERROR TaskQueueServiceError_ErrorCode = 3 - TaskQueueServiceError_TASK_TOO_LARGE TaskQueueServiceError_ErrorCode = 4 - TaskQueueServiceError_INVALID_TASK_NAME TaskQueueServiceError_ErrorCode = 5 - TaskQueueServiceError_INVALID_QUEUE_NAME TaskQueueServiceError_ErrorCode = 6 - TaskQueueServiceError_INVALID_URL TaskQueueServiceError_ErrorCode = 7 - TaskQueueServiceError_INVALID_QUEUE_RATE TaskQueueServiceError_ErrorCode = 8 - TaskQueueServiceError_PERMISSION_DENIED TaskQueueServiceError_ErrorCode = 9 - TaskQueueServiceError_TASK_ALREADY_EXISTS TaskQueueServiceError_ErrorCode = 10 - TaskQueueServiceError_TOMBSTONED_TASK TaskQueueServiceError_ErrorCode = 11 - TaskQueueServiceError_INVALID_ETA TaskQueueServiceError_ErrorCode = 12 - TaskQueueServiceError_INVALID_REQUEST TaskQueueServiceError_ErrorCode = 13 - TaskQueueServiceError_UNKNOWN_TASK TaskQueueServiceError_ErrorCode = 14 - TaskQueueServiceError_TOMBSTONED_QUEUE TaskQueueServiceError_ErrorCode = 15 - TaskQueueServiceError_DUPLICATE_TASK_NAME TaskQueueServiceError_ErrorCode = 16 - TaskQueueServiceError_SKIPPED TaskQueueServiceError_ErrorCode = 17 - TaskQueueServiceError_TOO_MANY_TASKS TaskQueueServiceError_ErrorCode = 18 - TaskQueueServiceError_INVALID_PAYLOAD TaskQueueServiceError_ErrorCode = 19 - TaskQueueServiceError_INVALID_RETRY_PARAMETERS TaskQueueServiceError_ErrorCode = 20 - TaskQueueServiceError_INVALID_QUEUE_MODE TaskQueueServiceError_ErrorCode = 21 - TaskQueueServiceError_ACL_LOOKUP_ERROR TaskQueueServiceError_ErrorCode = 22 - TaskQueueServiceError_TRANSACTIONAL_REQUEST_TOO_LARGE TaskQueueServiceError_ErrorCode = 23 - TaskQueueServiceError_INCORRECT_CREATOR_NAME TaskQueueServiceError_ErrorCode = 24 - TaskQueueServiceError_TASK_LEASE_EXPIRED TaskQueueServiceError_ErrorCode = 25 - TaskQueueServiceError_QUEUE_PAUSED TaskQueueServiceError_ErrorCode = 26 - TaskQueueServiceError_INVALID_TAG TaskQueueServiceError_ErrorCode = 27 - // Reserved range for the Datastore error codes. - // Original Datastore error code is shifted by DATASTORE_ERROR offset. - TaskQueueServiceError_DATASTORE_ERROR TaskQueueServiceError_ErrorCode = 10000 -) - -var TaskQueueServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "UNKNOWN_QUEUE", - 2: "TRANSIENT_ERROR", - 3: "INTERNAL_ERROR", - 4: "TASK_TOO_LARGE", - 5: "INVALID_TASK_NAME", - 6: "INVALID_QUEUE_NAME", - 7: "INVALID_URL", - 8: "INVALID_QUEUE_RATE", - 9: "PERMISSION_DENIED", - 10: "TASK_ALREADY_EXISTS", - 11: "TOMBSTONED_TASK", - 12: "INVALID_ETA", - 13: "INVALID_REQUEST", - 14: "UNKNOWN_TASK", - 15: "TOMBSTONED_QUEUE", - 16: "DUPLICATE_TASK_NAME", - 17: "SKIPPED", - 18: "TOO_MANY_TASKS", - 19: "INVALID_PAYLOAD", - 20: "INVALID_RETRY_PARAMETERS", - 21: "INVALID_QUEUE_MODE", - 22: "ACL_LOOKUP_ERROR", - 23: "TRANSACTIONAL_REQUEST_TOO_LARGE", - 24: "INCORRECT_CREATOR_NAME", - 25: "TASK_LEASE_EXPIRED", - 26: "QUEUE_PAUSED", - 27: "INVALID_TAG", - 10000: "DATASTORE_ERROR", -} -var TaskQueueServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "UNKNOWN_QUEUE": 1, - "TRANSIENT_ERROR": 2, - "INTERNAL_ERROR": 3, - "TASK_TOO_LARGE": 4, - "INVALID_TASK_NAME": 5, - "INVALID_QUEUE_NAME": 6, - "INVALID_URL": 7, - "INVALID_QUEUE_RATE": 8, - "PERMISSION_DENIED": 9, - "TASK_ALREADY_EXISTS": 10, - "TOMBSTONED_TASK": 11, - "INVALID_ETA": 12, - "INVALID_REQUEST": 13, - "UNKNOWN_TASK": 14, - "TOMBSTONED_QUEUE": 15, - "DUPLICATE_TASK_NAME": 16, - "SKIPPED": 17, - "TOO_MANY_TASKS": 18, - "INVALID_PAYLOAD": 19, - "INVALID_RETRY_PARAMETERS": 20, - "INVALID_QUEUE_MODE": 21, - "ACL_LOOKUP_ERROR": 22, - "TRANSACTIONAL_REQUEST_TOO_LARGE": 23, - "INCORRECT_CREATOR_NAME": 24, - "TASK_LEASE_EXPIRED": 25, - "QUEUE_PAUSED": 26, - "INVALID_TAG": 27, - "DATASTORE_ERROR": 10000, -} - -func (x TaskQueueServiceError_ErrorCode) Enum() *TaskQueueServiceError_ErrorCode { - p := new(TaskQueueServiceError_ErrorCode) - *p = x - return p -} -func (x TaskQueueServiceError_ErrorCode) String() string { - return proto.EnumName(TaskQueueServiceError_ErrorCode_name, int32(x)) -} -func (x *TaskQueueServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(TaskQueueServiceError_ErrorCode_value, data, "TaskQueueServiceError_ErrorCode") - if err != nil { - return err - } - *x = TaskQueueServiceError_ErrorCode(value) - return nil -} - -type TaskQueueMode_Mode int32 - -const ( - TaskQueueMode_PUSH TaskQueueMode_Mode = 0 - TaskQueueMode_PULL TaskQueueMode_Mode = 1 -) - -var TaskQueueMode_Mode_name = map[int32]string{ - 0: "PUSH", - 1: "PULL", -} -var TaskQueueMode_Mode_value = map[string]int32{ - "PUSH": 0, - "PULL": 1, -} - -func (x TaskQueueMode_Mode) Enum() *TaskQueueMode_Mode { - p := new(TaskQueueMode_Mode) - *p = x - return p -} -func (x TaskQueueMode_Mode) String() string { - return proto.EnumName(TaskQueueMode_Mode_name, int32(x)) -} -func (x *TaskQueueMode_Mode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(TaskQueueMode_Mode_value, data, "TaskQueueMode_Mode") - if err != nil { - return err - } - *x = TaskQueueMode_Mode(value) - return nil -} - -type TaskQueueAddRequest_RequestMethod int32 - -const ( - TaskQueueAddRequest_GET TaskQueueAddRequest_RequestMethod = 1 - TaskQueueAddRequest_POST TaskQueueAddRequest_RequestMethod = 2 - TaskQueueAddRequest_HEAD TaskQueueAddRequest_RequestMethod = 3 - TaskQueueAddRequest_PUT TaskQueueAddRequest_RequestMethod = 4 - TaskQueueAddRequest_DELETE TaskQueueAddRequest_RequestMethod = 5 -) - -var TaskQueueAddRequest_RequestMethod_name = map[int32]string{ - 1: "GET", - 2: "POST", - 3: "HEAD", - 4: "PUT", - 5: "DELETE", -} -var TaskQueueAddRequest_RequestMethod_value = map[string]int32{ - "GET": 1, - "POST": 2, - "HEAD": 3, - "PUT": 4, - "DELETE": 5, -} - -func (x TaskQueueAddRequest_RequestMethod) Enum() *TaskQueueAddRequest_RequestMethod { - p := new(TaskQueueAddRequest_RequestMethod) - *p = x - return p -} -func (x TaskQueueAddRequest_RequestMethod) String() string { - return proto.EnumName(TaskQueueAddRequest_RequestMethod_name, int32(x)) -} -func (x *TaskQueueAddRequest_RequestMethod) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(TaskQueueAddRequest_RequestMethod_value, data, "TaskQueueAddRequest_RequestMethod") - if err != nil { - return err - } - *x = TaskQueueAddRequest_RequestMethod(value) - return nil -} - -type TaskQueueQueryTasksResponse_Task_RequestMethod int32 - -const ( - TaskQueueQueryTasksResponse_Task_GET TaskQueueQueryTasksResponse_Task_RequestMethod = 1 - TaskQueueQueryTasksResponse_Task_POST TaskQueueQueryTasksResponse_Task_RequestMethod = 2 - TaskQueueQueryTasksResponse_Task_HEAD TaskQueueQueryTasksResponse_Task_RequestMethod = 3 - TaskQueueQueryTasksResponse_Task_PUT TaskQueueQueryTasksResponse_Task_RequestMethod = 4 - TaskQueueQueryTasksResponse_Task_DELETE TaskQueueQueryTasksResponse_Task_RequestMethod = 5 -) - -var TaskQueueQueryTasksResponse_Task_RequestMethod_name = map[int32]string{ - 1: "GET", - 2: "POST", - 3: "HEAD", - 4: "PUT", - 5: "DELETE", -} -var TaskQueueQueryTasksResponse_Task_RequestMethod_value = map[string]int32{ - "GET": 1, - "POST": 2, - "HEAD": 3, - "PUT": 4, - "DELETE": 5, -} - -func (x TaskQueueQueryTasksResponse_Task_RequestMethod) Enum() *TaskQueueQueryTasksResponse_Task_RequestMethod { - p := new(TaskQueueQueryTasksResponse_Task_RequestMethod) - *p = x - return p -} -func (x TaskQueueQueryTasksResponse_Task_RequestMethod) String() string { - return proto.EnumName(TaskQueueQueryTasksResponse_Task_RequestMethod_name, int32(x)) -} -func (x *TaskQueueQueryTasksResponse_Task_RequestMethod) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(TaskQueueQueryTasksResponse_Task_RequestMethod_value, data, "TaskQueueQueryTasksResponse_Task_RequestMethod") - if err != nil { - return err - } - *x = TaskQueueQueryTasksResponse_Task_RequestMethod(value) - return nil -} - -type TaskQueueServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueServiceError) Reset() { *m = TaskQueueServiceError{} } -func (m *TaskQueueServiceError) String() string { return proto.CompactTextString(m) } -func (*TaskQueueServiceError) ProtoMessage() {} - -type TaskPayload struct { - XXX_extensions map[int32]proto.Extension `json:"-"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskPayload) Reset() { *m = TaskPayload{} } -func (m *TaskPayload) String() string { return proto.CompactTextString(m) } -func (*TaskPayload) ProtoMessage() {} - -func (m *TaskPayload) Marshal() ([]byte, error) { - return proto.MarshalMessageSet(m.ExtensionMap()) -} -func (m *TaskPayload) Unmarshal(buf []byte) error { - return proto.UnmarshalMessageSet(buf, m.ExtensionMap()) -} -func (m *TaskPayload) MarshalJSON() ([]byte, error) { - return proto.MarshalMessageSetJSON(m.XXX_extensions) -} -func (m *TaskPayload) UnmarshalJSON(buf []byte) error { - return proto.UnmarshalMessageSetJSON(buf, m.XXX_extensions) -} - -// ensure TaskPayload satisfies proto.Marshaler and proto.Unmarshaler -var _ proto.Marshaler = (*TaskPayload)(nil) -var _ proto.Unmarshaler = (*TaskPayload)(nil) - -var extRange_TaskPayload = []proto.ExtensionRange{ - {10, 2147483646}, -} - -func (*TaskPayload) ExtensionRangeArray() []proto.ExtensionRange { - return extRange_TaskPayload -} -func (m *TaskPayload) ExtensionMap() map[int32]proto.Extension { - if m.XXX_extensions == nil { - m.XXX_extensions = make(map[int32]proto.Extension) - } - return m.XXX_extensions -} - -type TaskQueueRetryParameters struct { - RetryLimit *int32 `protobuf:"varint,1,opt,name=retry_limit" json:"retry_limit,omitempty"` - AgeLimitSec *int64 `protobuf:"varint,2,opt,name=age_limit_sec" json:"age_limit_sec,omitempty"` - MinBackoffSec *float64 `protobuf:"fixed64,3,opt,name=min_backoff_sec,def=0.1" json:"min_backoff_sec,omitempty"` - MaxBackoffSec *float64 `protobuf:"fixed64,4,opt,name=max_backoff_sec,def=3600" json:"max_backoff_sec,omitempty"` - MaxDoublings *int32 `protobuf:"varint,5,opt,name=max_doublings,def=16" json:"max_doublings,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueRetryParameters) Reset() { *m = TaskQueueRetryParameters{} } -func (m *TaskQueueRetryParameters) String() string { return proto.CompactTextString(m) } -func (*TaskQueueRetryParameters) ProtoMessage() {} - -const Default_TaskQueueRetryParameters_MinBackoffSec float64 = 0.1 -const Default_TaskQueueRetryParameters_MaxBackoffSec float64 = 3600 -const Default_TaskQueueRetryParameters_MaxDoublings int32 = 16 - -func (m *TaskQueueRetryParameters) GetRetryLimit() int32 { - if m != nil && m.RetryLimit != nil { - return *m.RetryLimit - } - return 0 -} - -func (m *TaskQueueRetryParameters) GetAgeLimitSec() int64 { - if m != nil && m.AgeLimitSec != nil { - return *m.AgeLimitSec - } - return 0 -} - -func (m *TaskQueueRetryParameters) GetMinBackoffSec() float64 { - if m != nil && m.MinBackoffSec != nil { - return *m.MinBackoffSec - } - return Default_TaskQueueRetryParameters_MinBackoffSec -} - -func (m *TaskQueueRetryParameters) GetMaxBackoffSec() float64 { - if m != nil && m.MaxBackoffSec != nil { - return *m.MaxBackoffSec - } - return Default_TaskQueueRetryParameters_MaxBackoffSec -} - -func (m *TaskQueueRetryParameters) GetMaxDoublings() int32 { - if m != nil && m.MaxDoublings != nil { - return *m.MaxDoublings - } - return Default_TaskQueueRetryParameters_MaxDoublings -} - -type TaskQueueAcl struct { - UserEmail [][]byte `protobuf:"bytes,1,rep,name=user_email" json:"user_email,omitempty"` - WriterEmail [][]byte `protobuf:"bytes,2,rep,name=writer_email" json:"writer_email,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueAcl) Reset() { *m = TaskQueueAcl{} } -func (m *TaskQueueAcl) String() string { return proto.CompactTextString(m) } -func (*TaskQueueAcl) ProtoMessage() {} - -func (m *TaskQueueAcl) GetUserEmail() [][]byte { - if m != nil { - return m.UserEmail - } - return nil -} - -func (m *TaskQueueAcl) GetWriterEmail() [][]byte { - if m != nil { - return m.WriterEmail - } - return nil -} - -type TaskQueueHttpHeader struct { - Key []byte `protobuf:"bytes,1,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,2,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueHttpHeader) Reset() { *m = TaskQueueHttpHeader{} } -func (m *TaskQueueHttpHeader) String() string { return proto.CompactTextString(m) } -func (*TaskQueueHttpHeader) ProtoMessage() {} - -func (m *TaskQueueHttpHeader) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *TaskQueueHttpHeader) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -type TaskQueueMode struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueMode) Reset() { *m = TaskQueueMode{} } -func (m *TaskQueueMode) String() string { return proto.CompactTextString(m) } -func (*TaskQueueMode) ProtoMessage() {} - -type TaskQueueAddRequest struct { - QueueName []byte `protobuf:"bytes,1,req,name=queue_name" json:"queue_name,omitempty"` - TaskName []byte `protobuf:"bytes,2,req,name=task_name" json:"task_name,omitempty"` - EtaUsec *int64 `protobuf:"varint,3,req,name=eta_usec" json:"eta_usec,omitempty"` - Method *TaskQueueAddRequest_RequestMethod `protobuf:"varint,5,opt,name=method,enum=appengine.TaskQueueAddRequest_RequestMethod,def=2" json:"method,omitempty"` - Url []byte `protobuf:"bytes,4,opt,name=url" json:"url,omitempty"` - Header []*TaskQueueAddRequest_Header `protobuf:"group,6,rep" json:"header,omitempty"` - Body []byte `protobuf:"bytes,9,opt,name=body" json:"body,omitempty"` - Transaction *appengine.Transaction `protobuf:"bytes,10,opt,name=transaction" json:"transaction,omitempty"` - AppId []byte `protobuf:"bytes,11,opt,name=app_id" json:"app_id,omitempty"` - Crontimetable *TaskQueueAddRequest_CronTimetable `protobuf:"group,12,opt,name=CronTimetable" json:"crontimetable,omitempty"` - Description []byte `protobuf:"bytes,15,opt,name=description" json:"description,omitempty"` - Payload *TaskPayload `protobuf:"bytes,16,opt,name=payload" json:"payload,omitempty"` - RetryParameters *TaskQueueRetryParameters `protobuf:"bytes,17,opt,name=retry_parameters" json:"retry_parameters,omitempty"` - Mode *TaskQueueMode_Mode `protobuf:"varint,18,opt,name=mode,enum=appengine.TaskQueueMode_Mode,def=0" json:"mode,omitempty"` - Tag []byte `protobuf:"bytes,19,opt,name=tag" json:"tag,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueAddRequest) Reset() { *m = TaskQueueAddRequest{} } -func (m *TaskQueueAddRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueAddRequest) ProtoMessage() {} - -const Default_TaskQueueAddRequest_Method TaskQueueAddRequest_RequestMethod = TaskQueueAddRequest_POST -const Default_TaskQueueAddRequest_Mode TaskQueueMode_Mode = TaskQueueMode_PUSH - -func (m *TaskQueueAddRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueAddRequest) GetTaskName() []byte { - if m != nil { - return m.TaskName - } - return nil -} - -func (m *TaskQueueAddRequest) GetEtaUsec() int64 { - if m != nil && m.EtaUsec != nil { - return *m.EtaUsec - } - return 0 -} - -func (m *TaskQueueAddRequest) GetMethod() TaskQueueAddRequest_RequestMethod { - if m != nil && m.Method != nil { - return *m.Method - } - return Default_TaskQueueAddRequest_Method -} - -func (m *TaskQueueAddRequest) GetUrl() []byte { - if m != nil { - return m.Url - } - return nil -} - -func (m *TaskQueueAddRequest) GetHeader() []*TaskQueueAddRequest_Header { - if m != nil { - return m.Header - } - return nil -} - -func (m *TaskQueueAddRequest) GetBody() []byte { - if m != nil { - return m.Body - } - return nil -} - -func (m *TaskQueueAddRequest) GetTransaction() *appengine.Transaction { - if m != nil { - return m.Transaction - } - return nil -} - -func (m *TaskQueueAddRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueAddRequest) GetCrontimetable() *TaskQueueAddRequest_CronTimetable { - if m != nil { - return m.Crontimetable - } - return nil -} - -func (m *TaskQueueAddRequest) GetDescription() []byte { - if m != nil { - return m.Description - } - return nil -} - -func (m *TaskQueueAddRequest) GetPayload() *TaskPayload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *TaskQueueAddRequest) GetRetryParameters() *TaskQueueRetryParameters { - if m != nil { - return m.RetryParameters - } - return nil -} - -func (m *TaskQueueAddRequest) GetMode() TaskQueueMode_Mode { - if m != nil && m.Mode != nil { - return *m.Mode - } - return Default_TaskQueueAddRequest_Mode -} - -func (m *TaskQueueAddRequest) GetTag() []byte { - if m != nil { - return m.Tag - } - return nil -} - -type TaskQueueAddRequest_Header struct { - Key []byte `protobuf:"bytes,7,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,8,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueAddRequest_Header) Reset() { *m = TaskQueueAddRequest_Header{} } -func (m *TaskQueueAddRequest_Header) String() string { return proto.CompactTextString(m) } -func (*TaskQueueAddRequest_Header) ProtoMessage() {} - -func (m *TaskQueueAddRequest_Header) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *TaskQueueAddRequest_Header) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -type TaskQueueAddRequest_CronTimetable struct { - Schedule []byte `protobuf:"bytes,13,req,name=schedule" json:"schedule,omitempty"` - Timezone []byte `protobuf:"bytes,14,req,name=timezone" json:"timezone,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueAddRequest_CronTimetable) Reset() { *m = TaskQueueAddRequest_CronTimetable{} } -func (m *TaskQueueAddRequest_CronTimetable) String() string { return proto.CompactTextString(m) } -func (*TaskQueueAddRequest_CronTimetable) ProtoMessage() {} - -func (m *TaskQueueAddRequest_CronTimetable) GetSchedule() []byte { - if m != nil { - return m.Schedule - } - return nil -} - -func (m *TaskQueueAddRequest_CronTimetable) GetTimezone() []byte { - if m != nil { - return m.Timezone - } - return nil -} - -type TaskQueueAddResponse struct { - ChosenTaskName []byte `protobuf:"bytes,1,opt,name=chosen_task_name" json:"chosen_task_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueAddResponse) Reset() { *m = TaskQueueAddResponse{} } -func (m *TaskQueueAddResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueAddResponse) ProtoMessage() {} - -func (m *TaskQueueAddResponse) GetChosenTaskName() []byte { - if m != nil { - return m.ChosenTaskName - } - return nil -} - -type TaskQueueBulkAddRequest struct { - AddRequest []*TaskQueueAddRequest `protobuf:"bytes,1,rep,name=add_request" json:"add_request,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueBulkAddRequest) Reset() { *m = TaskQueueBulkAddRequest{} } -func (m *TaskQueueBulkAddRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueBulkAddRequest) ProtoMessage() {} - -func (m *TaskQueueBulkAddRequest) GetAddRequest() []*TaskQueueAddRequest { - if m != nil { - return m.AddRequest - } - return nil -} - -type TaskQueueBulkAddResponse struct { - Taskresult []*TaskQueueBulkAddResponse_TaskResult `protobuf:"group,1,rep,name=TaskResult" json:"taskresult,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueBulkAddResponse) Reset() { *m = TaskQueueBulkAddResponse{} } -func (m *TaskQueueBulkAddResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueBulkAddResponse) ProtoMessage() {} - -func (m *TaskQueueBulkAddResponse) GetTaskresult() []*TaskQueueBulkAddResponse_TaskResult { - if m != nil { - return m.Taskresult - } - return nil -} - -type TaskQueueBulkAddResponse_TaskResult struct { - Result *TaskQueueServiceError_ErrorCode `protobuf:"varint,2,req,name=result,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"` - ChosenTaskName []byte `protobuf:"bytes,3,opt,name=chosen_task_name" json:"chosen_task_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueBulkAddResponse_TaskResult) Reset() { *m = TaskQueueBulkAddResponse_TaskResult{} } -func (m *TaskQueueBulkAddResponse_TaskResult) String() string { return proto.CompactTextString(m) } -func (*TaskQueueBulkAddResponse_TaskResult) ProtoMessage() {} - -func (m *TaskQueueBulkAddResponse_TaskResult) GetResult() TaskQueueServiceError_ErrorCode { - if m != nil && m.Result != nil { - return *m.Result - } - return TaskQueueServiceError_OK -} - -func (m *TaskQueueBulkAddResponse_TaskResult) GetChosenTaskName() []byte { - if m != nil { - return m.ChosenTaskName - } - return nil -} - -type TaskQueueDeleteRequest struct { - QueueName []byte `protobuf:"bytes,1,req,name=queue_name" json:"queue_name,omitempty"` - TaskName [][]byte `protobuf:"bytes,2,rep,name=task_name" json:"task_name,omitempty"` - AppId []byte `protobuf:"bytes,3,opt,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueDeleteRequest) Reset() { *m = TaskQueueDeleteRequest{} } -func (m *TaskQueueDeleteRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueDeleteRequest) ProtoMessage() {} - -func (m *TaskQueueDeleteRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueDeleteRequest) GetTaskName() [][]byte { - if m != nil { - return m.TaskName - } - return nil -} - -func (m *TaskQueueDeleteRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type TaskQueueDeleteResponse struct { - Result []TaskQueueServiceError_ErrorCode `protobuf:"varint,3,rep,name=result,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueDeleteResponse) Reset() { *m = TaskQueueDeleteResponse{} } -func (m *TaskQueueDeleteResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueDeleteResponse) ProtoMessage() {} - -func (m *TaskQueueDeleteResponse) GetResult() []TaskQueueServiceError_ErrorCode { - if m != nil { - return m.Result - } - return nil -} - -type TaskQueueForceRunRequest struct { - AppId []byte `protobuf:"bytes,1,opt,name=app_id" json:"app_id,omitempty"` - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - TaskName []byte `protobuf:"bytes,3,req,name=task_name" json:"task_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueForceRunRequest) Reset() { *m = TaskQueueForceRunRequest{} } -func (m *TaskQueueForceRunRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueForceRunRequest) ProtoMessage() {} - -func (m *TaskQueueForceRunRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueForceRunRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueForceRunRequest) GetTaskName() []byte { - if m != nil { - return m.TaskName - } - return nil -} - -type TaskQueueForceRunResponse struct { - Result *TaskQueueServiceError_ErrorCode `protobuf:"varint,3,req,name=result,enum=appengine.TaskQueueServiceError_ErrorCode" json:"result,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueForceRunResponse) Reset() { *m = TaskQueueForceRunResponse{} } -func (m *TaskQueueForceRunResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueForceRunResponse) ProtoMessage() {} - -func (m *TaskQueueForceRunResponse) GetResult() TaskQueueServiceError_ErrorCode { - if m != nil && m.Result != nil { - return *m.Result - } - return TaskQueueServiceError_OK -} - -type TaskQueueUpdateQueueRequest struct { - AppId []byte `protobuf:"bytes,1,opt,name=app_id" json:"app_id,omitempty"` - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - BucketRefillPerSecond *float64 `protobuf:"fixed64,3,req,name=bucket_refill_per_second" json:"bucket_refill_per_second,omitempty"` - BucketCapacity *int32 `protobuf:"varint,4,req,name=bucket_capacity" json:"bucket_capacity,omitempty"` - UserSpecifiedRate *string `protobuf:"bytes,5,opt,name=user_specified_rate" json:"user_specified_rate,omitempty"` - RetryParameters *TaskQueueRetryParameters `protobuf:"bytes,6,opt,name=retry_parameters" json:"retry_parameters,omitempty"` - MaxConcurrentRequests *int32 `protobuf:"varint,7,opt,name=max_concurrent_requests" json:"max_concurrent_requests,omitempty"` - Mode *TaskQueueMode_Mode `protobuf:"varint,8,opt,name=mode,enum=appengine.TaskQueueMode_Mode,def=0" json:"mode,omitempty"` - Acl *TaskQueueAcl `protobuf:"bytes,9,opt,name=acl" json:"acl,omitempty"` - HeaderOverride []*TaskQueueHttpHeader `protobuf:"bytes,10,rep,name=header_override" json:"header_override,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueUpdateQueueRequest) Reset() { *m = TaskQueueUpdateQueueRequest{} } -func (m *TaskQueueUpdateQueueRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueUpdateQueueRequest) ProtoMessage() {} - -const Default_TaskQueueUpdateQueueRequest_Mode TaskQueueMode_Mode = TaskQueueMode_PUSH - -func (m *TaskQueueUpdateQueueRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueUpdateQueueRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueUpdateQueueRequest) GetBucketRefillPerSecond() float64 { - if m != nil && m.BucketRefillPerSecond != nil { - return *m.BucketRefillPerSecond - } - return 0 -} - -func (m *TaskQueueUpdateQueueRequest) GetBucketCapacity() int32 { - if m != nil && m.BucketCapacity != nil { - return *m.BucketCapacity - } - return 0 -} - -func (m *TaskQueueUpdateQueueRequest) GetUserSpecifiedRate() string { - if m != nil && m.UserSpecifiedRate != nil { - return *m.UserSpecifiedRate - } - return "" -} - -func (m *TaskQueueUpdateQueueRequest) GetRetryParameters() *TaskQueueRetryParameters { - if m != nil { - return m.RetryParameters - } - return nil -} - -func (m *TaskQueueUpdateQueueRequest) GetMaxConcurrentRequests() int32 { - if m != nil && m.MaxConcurrentRequests != nil { - return *m.MaxConcurrentRequests - } - return 0 -} - -func (m *TaskQueueUpdateQueueRequest) GetMode() TaskQueueMode_Mode { - if m != nil && m.Mode != nil { - return *m.Mode - } - return Default_TaskQueueUpdateQueueRequest_Mode -} - -func (m *TaskQueueUpdateQueueRequest) GetAcl() *TaskQueueAcl { - if m != nil { - return m.Acl - } - return nil -} - -func (m *TaskQueueUpdateQueueRequest) GetHeaderOverride() []*TaskQueueHttpHeader { - if m != nil { - return m.HeaderOverride - } - return nil -} - -type TaskQueueUpdateQueueResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueUpdateQueueResponse) Reset() { *m = TaskQueueUpdateQueueResponse{} } -func (m *TaskQueueUpdateQueueResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueUpdateQueueResponse) ProtoMessage() {} - -type TaskQueueFetchQueuesRequest struct { - AppId []byte `protobuf:"bytes,1,opt,name=app_id" json:"app_id,omitempty"` - MaxRows *int32 `protobuf:"varint,2,req,name=max_rows" json:"max_rows,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchQueuesRequest) Reset() { *m = TaskQueueFetchQueuesRequest{} } -func (m *TaskQueueFetchQueuesRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueFetchQueuesRequest) ProtoMessage() {} - -func (m *TaskQueueFetchQueuesRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueFetchQueuesRequest) GetMaxRows() int32 { - if m != nil && m.MaxRows != nil { - return *m.MaxRows - } - return 0 -} - -type TaskQueueFetchQueuesResponse struct { - Queue []*TaskQueueFetchQueuesResponse_Queue `protobuf:"group,1,rep" json:"queue,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchQueuesResponse) Reset() { *m = TaskQueueFetchQueuesResponse{} } -func (m *TaskQueueFetchQueuesResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueFetchQueuesResponse) ProtoMessage() {} - -func (m *TaskQueueFetchQueuesResponse) GetQueue() []*TaskQueueFetchQueuesResponse_Queue { - if m != nil { - return m.Queue - } - return nil -} - -type TaskQueueFetchQueuesResponse_Queue struct { - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - BucketRefillPerSecond *float64 `protobuf:"fixed64,3,req,name=bucket_refill_per_second" json:"bucket_refill_per_second,omitempty"` - BucketCapacity *float64 `protobuf:"fixed64,4,req,name=bucket_capacity" json:"bucket_capacity,omitempty"` - UserSpecifiedRate *string `protobuf:"bytes,5,opt,name=user_specified_rate" json:"user_specified_rate,omitempty"` - Paused *bool `protobuf:"varint,6,req,name=paused,def=0" json:"paused,omitempty"` - RetryParameters *TaskQueueRetryParameters `protobuf:"bytes,7,opt,name=retry_parameters" json:"retry_parameters,omitempty"` - MaxConcurrentRequests *int32 `protobuf:"varint,8,opt,name=max_concurrent_requests" json:"max_concurrent_requests,omitempty"` - Mode *TaskQueueMode_Mode `protobuf:"varint,9,opt,name=mode,enum=appengine.TaskQueueMode_Mode,def=0" json:"mode,omitempty"` - Acl *TaskQueueAcl `protobuf:"bytes,10,opt,name=acl" json:"acl,omitempty"` - HeaderOverride []*TaskQueueHttpHeader `protobuf:"bytes,11,rep,name=header_override" json:"header_override,omitempty"` - CreatorName *string `protobuf:"bytes,12,opt,name=creator_name,def=apphosting" json:"creator_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchQueuesResponse_Queue) Reset() { *m = TaskQueueFetchQueuesResponse_Queue{} } -func (m *TaskQueueFetchQueuesResponse_Queue) String() string { return proto.CompactTextString(m) } -func (*TaskQueueFetchQueuesResponse_Queue) ProtoMessage() {} - -const Default_TaskQueueFetchQueuesResponse_Queue_Paused bool = false -const Default_TaskQueueFetchQueuesResponse_Queue_Mode TaskQueueMode_Mode = TaskQueueMode_PUSH -const Default_TaskQueueFetchQueuesResponse_Queue_CreatorName string = "apphosting" - -func (m *TaskQueueFetchQueuesResponse_Queue) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetBucketRefillPerSecond() float64 { - if m != nil && m.BucketRefillPerSecond != nil { - return *m.BucketRefillPerSecond - } - return 0 -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetBucketCapacity() float64 { - if m != nil && m.BucketCapacity != nil { - return *m.BucketCapacity - } - return 0 -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetUserSpecifiedRate() string { - if m != nil && m.UserSpecifiedRate != nil { - return *m.UserSpecifiedRate - } - return "" -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetPaused() bool { - if m != nil && m.Paused != nil { - return *m.Paused - } - return Default_TaskQueueFetchQueuesResponse_Queue_Paused -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetRetryParameters() *TaskQueueRetryParameters { - if m != nil { - return m.RetryParameters - } - return nil -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetMaxConcurrentRequests() int32 { - if m != nil && m.MaxConcurrentRequests != nil { - return *m.MaxConcurrentRequests - } - return 0 -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetMode() TaskQueueMode_Mode { - if m != nil && m.Mode != nil { - return *m.Mode - } - return Default_TaskQueueFetchQueuesResponse_Queue_Mode -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetAcl() *TaskQueueAcl { - if m != nil { - return m.Acl - } - return nil -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetHeaderOverride() []*TaskQueueHttpHeader { - if m != nil { - return m.HeaderOverride - } - return nil -} - -func (m *TaskQueueFetchQueuesResponse_Queue) GetCreatorName() string { - if m != nil && m.CreatorName != nil { - return *m.CreatorName - } - return Default_TaskQueueFetchQueuesResponse_Queue_CreatorName -} - -type TaskQueueFetchQueueStatsRequest struct { - AppId []byte `protobuf:"bytes,1,opt,name=app_id" json:"app_id,omitempty"` - QueueName [][]byte `protobuf:"bytes,2,rep,name=queue_name" json:"queue_name,omitempty"` - MaxNumTasks *int32 `protobuf:"varint,3,opt,name=max_num_tasks,def=0" json:"max_num_tasks,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchQueueStatsRequest) Reset() { *m = TaskQueueFetchQueueStatsRequest{} } -func (m *TaskQueueFetchQueueStatsRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueFetchQueueStatsRequest) ProtoMessage() {} - -const Default_TaskQueueFetchQueueStatsRequest_MaxNumTasks int32 = 0 - -func (m *TaskQueueFetchQueueStatsRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueFetchQueueStatsRequest) GetQueueName() [][]byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueFetchQueueStatsRequest) GetMaxNumTasks() int32 { - if m != nil && m.MaxNumTasks != nil { - return *m.MaxNumTasks - } - return Default_TaskQueueFetchQueueStatsRequest_MaxNumTasks -} - -type TaskQueueScannerQueueInfo struct { - ExecutedLastMinute *int64 `protobuf:"varint,1,req,name=executed_last_minute" json:"executed_last_minute,omitempty"` - ExecutedLastHour *int64 `protobuf:"varint,2,req,name=executed_last_hour" json:"executed_last_hour,omitempty"` - SamplingDurationSeconds *float64 `protobuf:"fixed64,3,req,name=sampling_duration_seconds" json:"sampling_duration_seconds,omitempty"` - RequestsInFlight *int32 `protobuf:"varint,4,opt,name=requests_in_flight" json:"requests_in_flight,omitempty"` - EnforcedRate *float64 `protobuf:"fixed64,5,opt,name=enforced_rate" json:"enforced_rate,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueScannerQueueInfo) Reset() { *m = TaskQueueScannerQueueInfo{} } -func (m *TaskQueueScannerQueueInfo) String() string { return proto.CompactTextString(m) } -func (*TaskQueueScannerQueueInfo) ProtoMessage() {} - -func (m *TaskQueueScannerQueueInfo) GetExecutedLastMinute() int64 { - if m != nil && m.ExecutedLastMinute != nil { - return *m.ExecutedLastMinute - } - return 0 -} - -func (m *TaskQueueScannerQueueInfo) GetExecutedLastHour() int64 { - if m != nil && m.ExecutedLastHour != nil { - return *m.ExecutedLastHour - } - return 0 -} - -func (m *TaskQueueScannerQueueInfo) GetSamplingDurationSeconds() float64 { - if m != nil && m.SamplingDurationSeconds != nil { - return *m.SamplingDurationSeconds - } - return 0 -} - -func (m *TaskQueueScannerQueueInfo) GetRequestsInFlight() int32 { - if m != nil && m.RequestsInFlight != nil { - return *m.RequestsInFlight - } - return 0 -} - -func (m *TaskQueueScannerQueueInfo) GetEnforcedRate() float64 { - if m != nil && m.EnforcedRate != nil { - return *m.EnforcedRate - } - return 0 -} - -type TaskQueueFetchQueueStatsResponse struct { - Queuestats []*TaskQueueFetchQueueStatsResponse_QueueStats `protobuf:"group,1,rep,name=QueueStats" json:"queuestats,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchQueueStatsResponse) Reset() { *m = TaskQueueFetchQueueStatsResponse{} } -func (m *TaskQueueFetchQueueStatsResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueFetchQueueStatsResponse) ProtoMessage() {} - -func (m *TaskQueueFetchQueueStatsResponse) GetQueuestats() []*TaskQueueFetchQueueStatsResponse_QueueStats { - if m != nil { - return m.Queuestats - } - return nil -} - -type TaskQueueFetchQueueStatsResponse_QueueStats struct { - NumTasks *int32 `protobuf:"varint,2,req,name=num_tasks" json:"num_tasks,omitempty"` - OldestEtaUsec *int64 `protobuf:"varint,3,req,name=oldest_eta_usec" json:"oldest_eta_usec,omitempty"` - ScannerInfo *TaskQueueScannerQueueInfo `protobuf:"bytes,4,opt,name=scanner_info" json:"scanner_info,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchQueueStatsResponse_QueueStats) Reset() { - *m = TaskQueueFetchQueueStatsResponse_QueueStats{} -} -func (m *TaskQueueFetchQueueStatsResponse_QueueStats) String() string { - return proto.CompactTextString(m) -} -func (*TaskQueueFetchQueueStatsResponse_QueueStats) ProtoMessage() {} - -func (m *TaskQueueFetchQueueStatsResponse_QueueStats) GetNumTasks() int32 { - if m != nil && m.NumTasks != nil { - return *m.NumTasks - } - return 0 -} - -func (m *TaskQueueFetchQueueStatsResponse_QueueStats) GetOldestEtaUsec() int64 { - if m != nil && m.OldestEtaUsec != nil { - return *m.OldestEtaUsec - } - return 0 -} - -func (m *TaskQueueFetchQueueStatsResponse_QueueStats) GetScannerInfo() *TaskQueueScannerQueueInfo { - if m != nil { - return m.ScannerInfo - } - return nil -} - -type TaskQueuePauseQueueRequest struct { - AppId []byte `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - Pause *bool `protobuf:"varint,3,req,name=pause" json:"pause,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueuePauseQueueRequest) Reset() { *m = TaskQueuePauseQueueRequest{} } -func (m *TaskQueuePauseQueueRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueuePauseQueueRequest) ProtoMessage() {} - -func (m *TaskQueuePauseQueueRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueuePauseQueueRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueuePauseQueueRequest) GetPause() bool { - if m != nil && m.Pause != nil { - return *m.Pause - } - return false -} - -type TaskQueuePauseQueueResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueuePauseQueueResponse) Reset() { *m = TaskQueuePauseQueueResponse{} } -func (m *TaskQueuePauseQueueResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueuePauseQueueResponse) ProtoMessage() {} - -type TaskQueuePurgeQueueRequest struct { - AppId []byte `protobuf:"bytes,1,opt,name=app_id" json:"app_id,omitempty"` - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueuePurgeQueueRequest) Reset() { *m = TaskQueuePurgeQueueRequest{} } -func (m *TaskQueuePurgeQueueRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueuePurgeQueueRequest) ProtoMessage() {} - -func (m *TaskQueuePurgeQueueRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueuePurgeQueueRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -type TaskQueuePurgeQueueResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueuePurgeQueueResponse) Reset() { *m = TaskQueuePurgeQueueResponse{} } -func (m *TaskQueuePurgeQueueResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueuePurgeQueueResponse) ProtoMessage() {} - -type TaskQueueDeleteQueueRequest struct { - AppId []byte `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueDeleteQueueRequest) Reset() { *m = TaskQueueDeleteQueueRequest{} } -func (m *TaskQueueDeleteQueueRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueDeleteQueueRequest) ProtoMessage() {} - -func (m *TaskQueueDeleteQueueRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueDeleteQueueRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -type TaskQueueDeleteQueueResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueDeleteQueueResponse) Reset() { *m = TaskQueueDeleteQueueResponse{} } -func (m *TaskQueueDeleteQueueResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueDeleteQueueResponse) ProtoMessage() {} - -type TaskQueueDeleteGroupRequest struct { - AppId []byte `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueDeleteGroupRequest) Reset() { *m = TaskQueueDeleteGroupRequest{} } -func (m *TaskQueueDeleteGroupRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueDeleteGroupRequest) ProtoMessage() {} - -func (m *TaskQueueDeleteGroupRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -type TaskQueueDeleteGroupResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueDeleteGroupResponse) Reset() { *m = TaskQueueDeleteGroupResponse{} } -func (m *TaskQueueDeleteGroupResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueDeleteGroupResponse) ProtoMessage() {} - -type TaskQueueQueryTasksRequest struct { - AppId []byte `protobuf:"bytes,1,opt,name=app_id" json:"app_id,omitempty"` - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - StartTaskName []byte `protobuf:"bytes,3,opt,name=start_task_name" json:"start_task_name,omitempty"` - StartEtaUsec *int64 `protobuf:"varint,4,opt,name=start_eta_usec" json:"start_eta_usec,omitempty"` - StartTag []byte `protobuf:"bytes,6,opt,name=start_tag" json:"start_tag,omitempty"` - MaxRows *int32 `protobuf:"varint,5,opt,name=max_rows,def=1" json:"max_rows,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryTasksRequest) Reset() { *m = TaskQueueQueryTasksRequest{} } -func (m *TaskQueueQueryTasksRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryTasksRequest) ProtoMessage() {} - -const Default_TaskQueueQueryTasksRequest_MaxRows int32 = 1 - -func (m *TaskQueueQueryTasksRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueQueryTasksRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueQueryTasksRequest) GetStartTaskName() []byte { - if m != nil { - return m.StartTaskName - } - return nil -} - -func (m *TaskQueueQueryTasksRequest) GetStartEtaUsec() int64 { - if m != nil && m.StartEtaUsec != nil { - return *m.StartEtaUsec - } - return 0 -} - -func (m *TaskQueueQueryTasksRequest) GetStartTag() []byte { - if m != nil { - return m.StartTag - } - return nil -} - -func (m *TaskQueueQueryTasksRequest) GetMaxRows() int32 { - if m != nil && m.MaxRows != nil { - return *m.MaxRows - } - return Default_TaskQueueQueryTasksRequest_MaxRows -} - -type TaskQueueQueryTasksResponse struct { - Task []*TaskQueueQueryTasksResponse_Task `protobuf:"group,1,rep" json:"task,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryTasksResponse) Reset() { *m = TaskQueueQueryTasksResponse{} } -func (m *TaskQueueQueryTasksResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryTasksResponse) ProtoMessage() {} - -func (m *TaskQueueQueryTasksResponse) GetTask() []*TaskQueueQueryTasksResponse_Task { - if m != nil { - return m.Task - } - return nil -} - -type TaskQueueQueryTasksResponse_Task struct { - TaskName []byte `protobuf:"bytes,2,req,name=task_name" json:"task_name,omitempty"` - EtaUsec *int64 `protobuf:"varint,3,req,name=eta_usec" json:"eta_usec,omitempty"` - Url []byte `protobuf:"bytes,4,opt,name=url" json:"url,omitempty"` - Method *TaskQueueQueryTasksResponse_Task_RequestMethod `protobuf:"varint,5,opt,name=method,enum=appengine.TaskQueueQueryTasksResponse_Task_RequestMethod" json:"method,omitempty"` - RetryCount *int32 `protobuf:"varint,6,opt,name=retry_count,def=0" json:"retry_count,omitempty"` - Header []*TaskQueueQueryTasksResponse_Task_Header `protobuf:"group,7,rep" json:"header,omitempty"` - BodySize *int32 `protobuf:"varint,10,opt,name=body_size" json:"body_size,omitempty"` - Body []byte `protobuf:"bytes,11,opt,name=body" json:"body,omitempty"` - CreationTimeUsec *int64 `protobuf:"varint,12,req,name=creation_time_usec" json:"creation_time_usec,omitempty"` - Crontimetable *TaskQueueQueryTasksResponse_Task_CronTimetable `protobuf:"group,13,opt,name=CronTimetable" json:"crontimetable,omitempty"` - Runlog *TaskQueueQueryTasksResponse_Task_RunLog `protobuf:"group,16,opt,name=RunLog" json:"runlog,omitempty"` - Description []byte `protobuf:"bytes,21,opt,name=description" json:"description,omitempty"` - Payload *TaskPayload `protobuf:"bytes,22,opt,name=payload" json:"payload,omitempty"` - RetryParameters *TaskQueueRetryParameters `protobuf:"bytes,23,opt,name=retry_parameters" json:"retry_parameters,omitempty"` - FirstTryUsec *int64 `protobuf:"varint,24,opt,name=first_try_usec" json:"first_try_usec,omitempty"` - Tag []byte `protobuf:"bytes,25,opt,name=tag" json:"tag,omitempty"` - ExecutionCount *int32 `protobuf:"varint,26,opt,name=execution_count,def=0" json:"execution_count,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryTasksResponse_Task) Reset() { *m = TaskQueueQueryTasksResponse_Task{} } -func (m *TaskQueueQueryTasksResponse_Task) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryTasksResponse_Task) ProtoMessage() {} - -const Default_TaskQueueQueryTasksResponse_Task_RetryCount int32 = 0 -const Default_TaskQueueQueryTasksResponse_Task_ExecutionCount int32 = 0 - -func (m *TaskQueueQueryTasksResponse_Task) GetTaskName() []byte { - if m != nil { - return m.TaskName - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetEtaUsec() int64 { - if m != nil && m.EtaUsec != nil { - return *m.EtaUsec - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task) GetUrl() []byte { - if m != nil { - return m.Url - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetMethod() TaskQueueQueryTasksResponse_Task_RequestMethod { - if m != nil && m.Method != nil { - return *m.Method - } - return TaskQueueQueryTasksResponse_Task_GET -} - -func (m *TaskQueueQueryTasksResponse_Task) GetRetryCount() int32 { - if m != nil && m.RetryCount != nil { - return *m.RetryCount - } - return Default_TaskQueueQueryTasksResponse_Task_RetryCount -} - -func (m *TaskQueueQueryTasksResponse_Task) GetHeader() []*TaskQueueQueryTasksResponse_Task_Header { - if m != nil { - return m.Header - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetBodySize() int32 { - if m != nil && m.BodySize != nil { - return *m.BodySize - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task) GetBody() []byte { - if m != nil { - return m.Body - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetCreationTimeUsec() int64 { - if m != nil && m.CreationTimeUsec != nil { - return *m.CreationTimeUsec - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task) GetCrontimetable() *TaskQueueQueryTasksResponse_Task_CronTimetable { - if m != nil { - return m.Crontimetable - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetRunlog() *TaskQueueQueryTasksResponse_Task_RunLog { - if m != nil { - return m.Runlog - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetDescription() []byte { - if m != nil { - return m.Description - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetPayload() *TaskPayload { - if m != nil { - return m.Payload - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetRetryParameters() *TaskQueueRetryParameters { - if m != nil { - return m.RetryParameters - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetFirstTryUsec() int64 { - if m != nil && m.FirstTryUsec != nil { - return *m.FirstTryUsec - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task) GetTag() []byte { - if m != nil { - return m.Tag - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task) GetExecutionCount() int32 { - if m != nil && m.ExecutionCount != nil { - return *m.ExecutionCount - } - return Default_TaskQueueQueryTasksResponse_Task_ExecutionCount -} - -type TaskQueueQueryTasksResponse_Task_Header struct { - Key []byte `protobuf:"bytes,8,req,name=key" json:"key,omitempty"` - Value []byte `protobuf:"bytes,9,req,name=value" json:"value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryTasksResponse_Task_Header) Reset() { - *m = TaskQueueQueryTasksResponse_Task_Header{} -} -func (m *TaskQueueQueryTasksResponse_Task_Header) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryTasksResponse_Task_Header) ProtoMessage() {} - -func (m *TaskQueueQueryTasksResponse_Task_Header) GetKey() []byte { - if m != nil { - return m.Key - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task_Header) GetValue() []byte { - if m != nil { - return m.Value - } - return nil -} - -type TaskQueueQueryTasksResponse_Task_CronTimetable struct { - Schedule []byte `protobuf:"bytes,14,req,name=schedule" json:"schedule,omitempty"` - Timezone []byte `protobuf:"bytes,15,req,name=timezone" json:"timezone,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) Reset() { - *m = TaskQueueQueryTasksResponse_Task_CronTimetable{} -} -func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) String() string { - return proto.CompactTextString(m) -} -func (*TaskQueueQueryTasksResponse_Task_CronTimetable) ProtoMessage() {} - -func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) GetSchedule() []byte { - if m != nil { - return m.Schedule - } - return nil -} - -func (m *TaskQueueQueryTasksResponse_Task_CronTimetable) GetTimezone() []byte { - if m != nil { - return m.Timezone - } - return nil -} - -type TaskQueueQueryTasksResponse_Task_RunLog struct { - DispatchedUsec *int64 `protobuf:"varint,17,req,name=dispatched_usec" json:"dispatched_usec,omitempty"` - LagUsec *int64 `protobuf:"varint,18,req,name=lag_usec" json:"lag_usec,omitempty"` - ElapsedUsec *int64 `protobuf:"varint,19,req,name=elapsed_usec" json:"elapsed_usec,omitempty"` - ResponseCode *int64 `protobuf:"varint,20,opt,name=response_code" json:"response_code,omitempty"` - RetryReason *string `protobuf:"bytes,27,opt,name=retry_reason" json:"retry_reason,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryTasksResponse_Task_RunLog) Reset() { - *m = TaskQueueQueryTasksResponse_Task_RunLog{} -} -func (m *TaskQueueQueryTasksResponse_Task_RunLog) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryTasksResponse_Task_RunLog) ProtoMessage() {} - -func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetDispatchedUsec() int64 { - if m != nil && m.DispatchedUsec != nil { - return *m.DispatchedUsec - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetLagUsec() int64 { - if m != nil && m.LagUsec != nil { - return *m.LagUsec - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetElapsedUsec() int64 { - if m != nil && m.ElapsedUsec != nil { - return *m.ElapsedUsec - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetResponseCode() int64 { - if m != nil && m.ResponseCode != nil { - return *m.ResponseCode - } - return 0 -} - -func (m *TaskQueueQueryTasksResponse_Task_RunLog) GetRetryReason() string { - if m != nil && m.RetryReason != nil { - return *m.RetryReason - } - return "" -} - -type TaskQueueFetchTaskRequest struct { - AppId []byte `protobuf:"bytes,1,opt,name=app_id" json:"app_id,omitempty"` - QueueName []byte `protobuf:"bytes,2,req,name=queue_name" json:"queue_name,omitempty"` - TaskName []byte `protobuf:"bytes,3,req,name=task_name" json:"task_name,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchTaskRequest) Reset() { *m = TaskQueueFetchTaskRequest{} } -func (m *TaskQueueFetchTaskRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueFetchTaskRequest) ProtoMessage() {} - -func (m *TaskQueueFetchTaskRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueFetchTaskRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueFetchTaskRequest) GetTaskName() []byte { - if m != nil { - return m.TaskName - } - return nil -} - -type TaskQueueFetchTaskResponse struct { - Task *TaskQueueQueryTasksResponse `protobuf:"bytes,1,req,name=task" json:"task,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueFetchTaskResponse) Reset() { *m = TaskQueueFetchTaskResponse{} } -func (m *TaskQueueFetchTaskResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueFetchTaskResponse) ProtoMessage() {} - -func (m *TaskQueueFetchTaskResponse) GetTask() *TaskQueueQueryTasksResponse { - if m != nil { - return m.Task - } - return nil -} - -type TaskQueueUpdateStorageLimitRequest struct { - AppId []byte `protobuf:"bytes,1,req,name=app_id" json:"app_id,omitempty"` - Limit *int64 `protobuf:"varint,2,req,name=limit" json:"limit,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueUpdateStorageLimitRequest) Reset() { *m = TaskQueueUpdateStorageLimitRequest{} } -func (m *TaskQueueUpdateStorageLimitRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueUpdateStorageLimitRequest) ProtoMessage() {} - -func (m *TaskQueueUpdateStorageLimitRequest) GetAppId() []byte { - if m != nil { - return m.AppId - } - return nil -} - -func (m *TaskQueueUpdateStorageLimitRequest) GetLimit() int64 { - if m != nil && m.Limit != nil { - return *m.Limit - } - return 0 -} - -type TaskQueueUpdateStorageLimitResponse struct { - NewLimit *int64 `protobuf:"varint,1,req,name=new_limit" json:"new_limit,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueUpdateStorageLimitResponse) Reset() { *m = TaskQueueUpdateStorageLimitResponse{} } -func (m *TaskQueueUpdateStorageLimitResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueUpdateStorageLimitResponse) ProtoMessage() {} - -func (m *TaskQueueUpdateStorageLimitResponse) GetNewLimit() int64 { - if m != nil && m.NewLimit != nil { - return *m.NewLimit - } - return 0 -} - -type TaskQueueQueryAndOwnTasksRequest struct { - QueueName []byte `protobuf:"bytes,1,req,name=queue_name" json:"queue_name,omitempty"` - LeaseSeconds *float64 `protobuf:"fixed64,2,req,name=lease_seconds" json:"lease_seconds,omitempty"` - MaxTasks *int64 `protobuf:"varint,3,req,name=max_tasks" json:"max_tasks,omitempty"` - GroupByTag *bool `protobuf:"varint,4,opt,name=group_by_tag,def=0" json:"group_by_tag,omitempty"` - Tag []byte `protobuf:"bytes,5,opt,name=tag" json:"tag,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryAndOwnTasksRequest) Reset() { *m = TaskQueueQueryAndOwnTasksRequest{} } -func (m *TaskQueueQueryAndOwnTasksRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryAndOwnTasksRequest) ProtoMessage() {} - -const Default_TaskQueueQueryAndOwnTasksRequest_GroupByTag bool = false - -func (m *TaskQueueQueryAndOwnTasksRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueQueryAndOwnTasksRequest) GetLeaseSeconds() float64 { - if m != nil && m.LeaseSeconds != nil { - return *m.LeaseSeconds - } - return 0 -} - -func (m *TaskQueueQueryAndOwnTasksRequest) GetMaxTasks() int64 { - if m != nil && m.MaxTasks != nil { - return *m.MaxTasks - } - return 0 -} - -func (m *TaskQueueQueryAndOwnTasksRequest) GetGroupByTag() bool { - if m != nil && m.GroupByTag != nil { - return *m.GroupByTag - } - return Default_TaskQueueQueryAndOwnTasksRequest_GroupByTag -} - -func (m *TaskQueueQueryAndOwnTasksRequest) GetTag() []byte { - if m != nil { - return m.Tag - } - return nil -} - -type TaskQueueQueryAndOwnTasksResponse struct { - Task []*TaskQueueQueryAndOwnTasksResponse_Task `protobuf:"group,1,rep" json:"task,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryAndOwnTasksResponse) Reset() { *m = TaskQueueQueryAndOwnTasksResponse{} } -func (m *TaskQueueQueryAndOwnTasksResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryAndOwnTasksResponse) ProtoMessage() {} - -func (m *TaskQueueQueryAndOwnTasksResponse) GetTask() []*TaskQueueQueryAndOwnTasksResponse_Task { - if m != nil { - return m.Task - } - return nil -} - -type TaskQueueQueryAndOwnTasksResponse_Task struct { - TaskName []byte `protobuf:"bytes,2,req,name=task_name" json:"task_name,omitempty"` - EtaUsec *int64 `protobuf:"varint,3,req,name=eta_usec" json:"eta_usec,omitempty"` - RetryCount *int32 `protobuf:"varint,4,opt,name=retry_count,def=0" json:"retry_count,omitempty"` - Body []byte `protobuf:"bytes,5,opt,name=body" json:"body,omitempty"` - Tag []byte `protobuf:"bytes,6,opt,name=tag" json:"tag,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueQueryAndOwnTasksResponse_Task) Reset() { - *m = TaskQueueQueryAndOwnTasksResponse_Task{} -} -func (m *TaskQueueQueryAndOwnTasksResponse_Task) String() string { return proto.CompactTextString(m) } -func (*TaskQueueQueryAndOwnTasksResponse_Task) ProtoMessage() {} - -const Default_TaskQueueQueryAndOwnTasksResponse_Task_RetryCount int32 = 0 - -func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetTaskName() []byte { - if m != nil { - return m.TaskName - } - return nil -} - -func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetEtaUsec() int64 { - if m != nil && m.EtaUsec != nil { - return *m.EtaUsec - } - return 0 -} - -func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetRetryCount() int32 { - if m != nil && m.RetryCount != nil { - return *m.RetryCount - } - return Default_TaskQueueQueryAndOwnTasksResponse_Task_RetryCount -} - -func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetBody() []byte { - if m != nil { - return m.Body - } - return nil -} - -func (m *TaskQueueQueryAndOwnTasksResponse_Task) GetTag() []byte { - if m != nil { - return m.Tag - } - return nil -} - -type TaskQueueModifyTaskLeaseRequest struct { - QueueName []byte `protobuf:"bytes,1,req,name=queue_name" json:"queue_name,omitempty"` - TaskName []byte `protobuf:"bytes,2,req,name=task_name" json:"task_name,omitempty"` - EtaUsec *int64 `protobuf:"varint,3,req,name=eta_usec" json:"eta_usec,omitempty"` - LeaseSeconds *float64 `protobuf:"fixed64,4,req,name=lease_seconds" json:"lease_seconds,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueModifyTaskLeaseRequest) Reset() { *m = TaskQueueModifyTaskLeaseRequest{} } -func (m *TaskQueueModifyTaskLeaseRequest) String() string { return proto.CompactTextString(m) } -func (*TaskQueueModifyTaskLeaseRequest) ProtoMessage() {} - -func (m *TaskQueueModifyTaskLeaseRequest) GetQueueName() []byte { - if m != nil { - return m.QueueName - } - return nil -} - -func (m *TaskQueueModifyTaskLeaseRequest) GetTaskName() []byte { - if m != nil { - return m.TaskName - } - return nil -} - -func (m *TaskQueueModifyTaskLeaseRequest) GetEtaUsec() int64 { - if m != nil && m.EtaUsec != nil { - return *m.EtaUsec - } - return 0 -} - -func (m *TaskQueueModifyTaskLeaseRequest) GetLeaseSeconds() float64 { - if m != nil && m.LeaseSeconds != nil { - return *m.LeaseSeconds - } - return 0 -} - -type TaskQueueModifyTaskLeaseResponse struct { - UpdatedEtaUsec *int64 `protobuf:"varint,1,req,name=updated_eta_usec" json:"updated_eta_usec,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *TaskQueueModifyTaskLeaseResponse) Reset() { *m = TaskQueueModifyTaskLeaseResponse{} } -func (m *TaskQueueModifyTaskLeaseResponse) String() string { return proto.CompactTextString(m) } -func (*TaskQueueModifyTaskLeaseResponse) ProtoMessage() {} - -func (m *TaskQueueModifyTaskLeaseResponse) GetUpdatedEtaUsec() int64 { - if m != nil && m.UpdatedEtaUsec != nil { - return *m.UpdatedEtaUsec - } - return 0 -} - -func init() { - proto.RegisterEnum("appengine.TaskQueueServiceError_ErrorCode", TaskQueueServiceError_ErrorCode_name, TaskQueueServiceError_ErrorCode_value) - proto.RegisterEnum("appengine.TaskQueueMode_Mode", TaskQueueMode_Mode_name, TaskQueueMode_Mode_value) - proto.RegisterEnum("appengine.TaskQueueAddRequest_RequestMethod", TaskQueueAddRequest_RequestMethod_name, TaskQueueAddRequest_RequestMethod_value) - proto.RegisterEnum("appengine.TaskQueueQueryTasksResponse_Task_RequestMethod", TaskQueueQueryTasksResponse_Task_RequestMethod_name, TaskQueueQueryTasksResponse_Task_RequestMethod_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto deleted file mode 100644 index 419aaf5702a..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/taskqueue/taskqueue_service.proto +++ /dev/null @@ -1,342 +0,0 @@ -syntax = "proto2"; -option go_package = "taskqueue"; - -import "google.golang.org/appengine/internal/datastore/datastore_v3.proto"; - -package appengine; - -message TaskQueueServiceError { - enum ErrorCode { - OK = 0; - UNKNOWN_QUEUE = 1; - TRANSIENT_ERROR = 2; - INTERNAL_ERROR = 3; - TASK_TOO_LARGE = 4; - INVALID_TASK_NAME = 5; - INVALID_QUEUE_NAME = 6; - INVALID_URL = 7; - INVALID_QUEUE_RATE = 8; - PERMISSION_DENIED = 9; - TASK_ALREADY_EXISTS = 10; - TOMBSTONED_TASK = 11; - INVALID_ETA = 12; - INVALID_REQUEST = 13; - UNKNOWN_TASK = 14; - TOMBSTONED_QUEUE = 15; - DUPLICATE_TASK_NAME = 16; - SKIPPED = 17; - TOO_MANY_TASKS = 18; - INVALID_PAYLOAD = 19; - INVALID_RETRY_PARAMETERS = 20; - INVALID_QUEUE_MODE = 21; - ACL_LOOKUP_ERROR = 22; - TRANSACTIONAL_REQUEST_TOO_LARGE = 23; - INCORRECT_CREATOR_NAME = 24; - TASK_LEASE_EXPIRED = 25; - QUEUE_PAUSED = 26; - INVALID_TAG = 27; - - // Reserved range for the Datastore error codes. - // Original Datastore error code is shifted by DATASTORE_ERROR offset. - DATASTORE_ERROR = 10000; - } -} - -message TaskPayload { - extensions 10 to max; - option message_set_wire_format = true; -} - -message TaskQueueRetryParameters { - optional int32 retry_limit = 1; - optional int64 age_limit_sec = 2; - - optional double min_backoff_sec = 3 [default = 0.1]; - optional double max_backoff_sec = 4 [default = 3600]; - optional int32 max_doublings = 5 [default = 16]; -} - -message TaskQueueAcl { - repeated bytes user_email = 1; - repeated bytes writer_email = 2; -} - -message TaskQueueHttpHeader { - required bytes key = 1; - required bytes value = 2; -} - -message TaskQueueMode { - enum Mode { - PUSH = 0; - PULL = 1; - } -} - -message TaskQueueAddRequest { - required bytes queue_name = 1; - required bytes task_name = 2; - required int64 eta_usec = 3; - - enum RequestMethod { - GET = 1; - POST = 2; - HEAD = 3; - PUT = 4; - DELETE = 5; - } - optional RequestMethod method = 5 [default=POST]; - - optional bytes url = 4; - - repeated group Header = 6 { - required bytes key = 7; - required bytes value = 8; - } - - optional bytes body = 9 [ctype=CORD]; - optional Transaction transaction = 10; - optional bytes app_id = 11; - - optional group CronTimetable = 12 { - required bytes schedule = 13; - required bytes timezone = 14; - } - - optional bytes description = 15; - optional TaskPayload payload = 16; - optional TaskQueueRetryParameters retry_parameters = 17; - optional TaskQueueMode.Mode mode = 18 [default=PUSH]; - optional bytes tag = 19; -} - -message TaskQueueAddResponse { - optional bytes chosen_task_name = 1; -} - -message TaskQueueBulkAddRequest { - repeated TaskQueueAddRequest add_request = 1; -} - -message TaskQueueBulkAddResponse { - repeated group TaskResult = 1 { - required TaskQueueServiceError.ErrorCode result = 2; - optional bytes chosen_task_name = 3; - } -} - -message TaskQueueDeleteRequest { - required bytes queue_name = 1; - repeated bytes task_name = 2; - optional bytes app_id = 3; -} - -message TaskQueueDeleteResponse { - repeated TaskQueueServiceError.ErrorCode result = 3; -} - -message TaskQueueForceRunRequest { - optional bytes app_id = 1; - required bytes queue_name = 2; - required bytes task_name = 3; -} - -message TaskQueueForceRunResponse { - required TaskQueueServiceError.ErrorCode result = 3; -} - -message TaskQueueUpdateQueueRequest { - optional bytes app_id = 1; - required bytes queue_name = 2; - required double bucket_refill_per_second = 3; - required int32 bucket_capacity = 4; - optional string user_specified_rate = 5; - optional TaskQueueRetryParameters retry_parameters = 6; - optional int32 max_concurrent_requests = 7; - optional TaskQueueMode.Mode mode = 8 [default = PUSH]; - optional TaskQueueAcl acl = 9; - repeated TaskQueueHttpHeader header_override = 10; -} - -message TaskQueueUpdateQueueResponse { -} - -message TaskQueueFetchQueuesRequest { - optional bytes app_id = 1; - required int32 max_rows = 2; -} - -message TaskQueueFetchQueuesResponse { - repeated group Queue = 1 { - required bytes queue_name = 2; - required double bucket_refill_per_second = 3; - required double bucket_capacity = 4; - optional string user_specified_rate = 5; - required bool paused = 6 [default=false]; - optional TaskQueueRetryParameters retry_parameters = 7; - optional int32 max_concurrent_requests = 8; - optional TaskQueueMode.Mode mode = 9 [default = PUSH]; - optional TaskQueueAcl acl = 10; - repeated TaskQueueHttpHeader header_override = 11; - optional string creator_name = 12 [ctype=CORD, default="apphosting"]; - } -} - -message TaskQueueFetchQueueStatsRequest { - optional bytes app_id = 1; - repeated bytes queue_name = 2; - optional int32 max_num_tasks = 3 [default = 0]; -} - -message TaskQueueScannerQueueInfo { - required int64 executed_last_minute = 1; - required int64 executed_last_hour = 2; - required double sampling_duration_seconds = 3; - optional int32 requests_in_flight = 4; - optional double enforced_rate = 5; -} - -message TaskQueueFetchQueueStatsResponse { - repeated group QueueStats = 1 { - required int32 num_tasks = 2; - required int64 oldest_eta_usec = 3; - optional TaskQueueScannerQueueInfo scanner_info = 4; - } -} -message TaskQueuePauseQueueRequest { - required bytes app_id = 1; - required bytes queue_name = 2; - required bool pause = 3; -} - -message TaskQueuePauseQueueResponse { -} - -message TaskQueuePurgeQueueRequest { - optional bytes app_id = 1; - required bytes queue_name = 2; -} - -message TaskQueuePurgeQueueResponse { -} - -message TaskQueueDeleteQueueRequest { - required bytes app_id = 1; - required bytes queue_name = 2; -} - -message TaskQueueDeleteQueueResponse { -} - -message TaskQueueDeleteGroupRequest { - required bytes app_id = 1; -} - -message TaskQueueDeleteGroupResponse { -} - -message TaskQueueQueryTasksRequest { - optional bytes app_id = 1; - required bytes queue_name = 2; - - optional bytes start_task_name = 3; - optional int64 start_eta_usec = 4; - optional bytes start_tag = 6; - optional int32 max_rows = 5 [default = 1]; -} - -message TaskQueueQueryTasksResponse { - repeated group Task = 1 { - required bytes task_name = 2; - required int64 eta_usec = 3; - optional bytes url = 4; - - enum RequestMethod { - GET = 1; - POST = 2; - HEAD = 3; - PUT = 4; - DELETE = 5; - } - optional RequestMethod method = 5; - - optional int32 retry_count = 6 [default=0]; - - repeated group Header = 7 { - required bytes key = 8; - required bytes value = 9; - } - - optional int32 body_size = 10; - optional bytes body = 11 [ctype=CORD]; - required int64 creation_time_usec = 12; - - optional group CronTimetable = 13 { - required bytes schedule = 14; - required bytes timezone = 15; - } - - optional group RunLog = 16 { - required int64 dispatched_usec = 17; - required int64 lag_usec = 18; - required int64 elapsed_usec = 19; - optional int64 response_code = 20; - optional string retry_reason = 27; - } - - optional bytes description = 21; - optional TaskPayload payload = 22; - optional TaskQueueRetryParameters retry_parameters = 23; - optional int64 first_try_usec = 24; - optional bytes tag = 25; - optional int32 execution_count = 26 [default=0]; - } -} - -message TaskQueueFetchTaskRequest { - optional bytes app_id = 1; - required bytes queue_name = 2; - required bytes task_name = 3; -} - -message TaskQueueFetchTaskResponse { - required TaskQueueQueryTasksResponse task = 1; -} - -message TaskQueueUpdateStorageLimitRequest { - required bytes app_id = 1; - required int64 limit = 2; -} - -message TaskQueueUpdateStorageLimitResponse { - required int64 new_limit = 1; -} - -message TaskQueueQueryAndOwnTasksRequest { - required bytes queue_name = 1; - required double lease_seconds = 2; - required int64 max_tasks = 3; - optional bool group_by_tag = 4 [default=false]; - optional bytes tag = 5; -} - -message TaskQueueQueryAndOwnTasksResponse { - repeated group Task = 1 { - required bytes task_name = 2; - required int64 eta_usec = 3; - optional int32 retry_count = 4 [default=0]; - optional bytes body = 5 [ctype=CORD]; - optional bytes tag = 6; - } -} - -message TaskQueueModifyTaskLeaseRequest { - required bytes queue_name = 1; - required bytes task_name = 2; - required int64 eta_usec = 3; - required double lease_seconds = 4; -} - -message TaskQueueModifyTaskLeaseResponse { - required int64 updated_eta_usec = 1; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/transaction.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/transaction.go deleted file mode 100644 index 543f1c52900..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/transaction.go +++ /dev/null @@ -1,30 +0,0 @@ -package internal - -// This file implements hooks for applying datastore transactions. - -import ( - "reflect" - - "github.com/golang/protobuf/proto" - - pb "google.golang.org/appengine/internal/datastore" -) - -var transactionSetters = make(map[reflect.Type]reflect.Value) - -// RegisterTransactionSetter registers a function that sets transaction information -// in a protocol buffer message. f should be a function with two arguments, -// the first being a protocol buffer type, and the second being *datastore.Transaction. -func RegisterTransactionSetter(f interface{}) { - v := reflect.ValueOf(f) - transactionSetters[v.Type().In(0)] = v -} - -// ApplyTransaction applies the transaction t to message pb -// by using the relevant setter passed to RegisterTransactionSetter. -func ApplyTransaction(pb proto.Message, t *pb.Transaction) { - v := reflect.ValueOf(pb) - if f, ok := transactionSetters[v.Type()]; ok { - f.Call([]reflect.Value{v, reflect.ValueOf(t)}) - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go deleted file mode 100644 index ef7fd26eca8..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +++ /dev/null @@ -1,355 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto -// DO NOT EDIT! - -/* -Package urlfetch is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto - -It has these top-level messages: - URLFetchServiceError - URLFetchRequest - URLFetchResponse -*/ -package urlfetch - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type URLFetchServiceError_ErrorCode int32 - -const ( - URLFetchServiceError_OK URLFetchServiceError_ErrorCode = 0 - URLFetchServiceError_INVALID_URL URLFetchServiceError_ErrorCode = 1 - URLFetchServiceError_FETCH_ERROR URLFetchServiceError_ErrorCode = 2 - URLFetchServiceError_UNSPECIFIED_ERROR URLFetchServiceError_ErrorCode = 3 - URLFetchServiceError_RESPONSE_TOO_LARGE URLFetchServiceError_ErrorCode = 4 - URLFetchServiceError_DEADLINE_EXCEEDED URLFetchServiceError_ErrorCode = 5 - URLFetchServiceError_SSL_CERTIFICATE_ERROR URLFetchServiceError_ErrorCode = 6 - URLFetchServiceError_DNS_ERROR URLFetchServiceError_ErrorCode = 7 - URLFetchServiceError_CLOSED URLFetchServiceError_ErrorCode = 8 - URLFetchServiceError_INTERNAL_TRANSIENT_ERROR URLFetchServiceError_ErrorCode = 9 - URLFetchServiceError_TOO_MANY_REDIRECTS URLFetchServiceError_ErrorCode = 10 - URLFetchServiceError_MALFORMED_REPLY URLFetchServiceError_ErrorCode = 11 - URLFetchServiceError_CONNECTION_ERROR URLFetchServiceError_ErrorCode = 12 -) - -var URLFetchServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "INVALID_URL", - 2: "FETCH_ERROR", - 3: "UNSPECIFIED_ERROR", - 4: "RESPONSE_TOO_LARGE", - 5: "DEADLINE_EXCEEDED", - 6: "SSL_CERTIFICATE_ERROR", - 7: "DNS_ERROR", - 8: "CLOSED", - 9: "INTERNAL_TRANSIENT_ERROR", - 10: "TOO_MANY_REDIRECTS", - 11: "MALFORMED_REPLY", - 12: "CONNECTION_ERROR", -} -var URLFetchServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "INVALID_URL": 1, - "FETCH_ERROR": 2, - "UNSPECIFIED_ERROR": 3, - "RESPONSE_TOO_LARGE": 4, - "DEADLINE_EXCEEDED": 5, - "SSL_CERTIFICATE_ERROR": 6, - "DNS_ERROR": 7, - "CLOSED": 8, - "INTERNAL_TRANSIENT_ERROR": 9, - "TOO_MANY_REDIRECTS": 10, - "MALFORMED_REPLY": 11, - "CONNECTION_ERROR": 12, -} - -func (x URLFetchServiceError_ErrorCode) Enum() *URLFetchServiceError_ErrorCode { - p := new(URLFetchServiceError_ErrorCode) - *p = x - return p -} -func (x URLFetchServiceError_ErrorCode) String() string { - return proto.EnumName(URLFetchServiceError_ErrorCode_name, int32(x)) -} -func (x *URLFetchServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(URLFetchServiceError_ErrorCode_value, data, "URLFetchServiceError_ErrorCode") - if err != nil { - return err - } - *x = URLFetchServiceError_ErrorCode(value) - return nil -} - -type URLFetchRequest_RequestMethod int32 - -const ( - URLFetchRequest_GET URLFetchRequest_RequestMethod = 1 - URLFetchRequest_POST URLFetchRequest_RequestMethod = 2 - URLFetchRequest_HEAD URLFetchRequest_RequestMethod = 3 - URLFetchRequest_PUT URLFetchRequest_RequestMethod = 4 - URLFetchRequest_DELETE URLFetchRequest_RequestMethod = 5 - URLFetchRequest_PATCH URLFetchRequest_RequestMethod = 6 -) - -var URLFetchRequest_RequestMethod_name = map[int32]string{ - 1: "GET", - 2: "POST", - 3: "HEAD", - 4: "PUT", - 5: "DELETE", - 6: "PATCH", -} -var URLFetchRequest_RequestMethod_value = map[string]int32{ - "GET": 1, - "POST": 2, - "HEAD": 3, - "PUT": 4, - "DELETE": 5, - "PATCH": 6, -} - -func (x URLFetchRequest_RequestMethod) Enum() *URLFetchRequest_RequestMethod { - p := new(URLFetchRequest_RequestMethod) - *p = x - return p -} -func (x URLFetchRequest_RequestMethod) String() string { - return proto.EnumName(URLFetchRequest_RequestMethod_name, int32(x)) -} -func (x *URLFetchRequest_RequestMethod) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(URLFetchRequest_RequestMethod_value, data, "URLFetchRequest_RequestMethod") - if err != nil { - return err - } - *x = URLFetchRequest_RequestMethod(value) - return nil -} - -type URLFetchServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *URLFetchServiceError) Reset() { *m = URLFetchServiceError{} } -func (m *URLFetchServiceError) String() string { return proto.CompactTextString(m) } -func (*URLFetchServiceError) ProtoMessage() {} - -type URLFetchRequest struct { - Method *URLFetchRequest_RequestMethod `protobuf:"varint,1,req,enum=appengine.URLFetchRequest_RequestMethod" json:"Method,omitempty"` - Url *string `protobuf:"bytes,2,req" json:"Url,omitempty"` - Header []*URLFetchRequest_Header `protobuf:"group,3,rep" json:"header,omitempty"` - Payload []byte `protobuf:"bytes,6,opt" json:"Payload,omitempty"` - FollowRedirects *bool `protobuf:"varint,7,opt,def=1" json:"FollowRedirects,omitempty"` - Deadline *float64 `protobuf:"fixed64,8,opt" json:"Deadline,omitempty"` - MustValidateServerCertificate *bool `protobuf:"varint,9,opt,def=1" json:"MustValidateServerCertificate,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *URLFetchRequest) Reset() { *m = URLFetchRequest{} } -func (m *URLFetchRequest) String() string { return proto.CompactTextString(m) } -func (*URLFetchRequest) ProtoMessage() {} - -const Default_URLFetchRequest_FollowRedirects bool = true -const Default_URLFetchRequest_MustValidateServerCertificate bool = true - -func (m *URLFetchRequest) GetMethod() URLFetchRequest_RequestMethod { - if m != nil && m.Method != nil { - return *m.Method - } - return URLFetchRequest_GET -} - -func (m *URLFetchRequest) GetUrl() string { - if m != nil && m.Url != nil { - return *m.Url - } - return "" -} - -func (m *URLFetchRequest) GetHeader() []*URLFetchRequest_Header { - if m != nil { - return m.Header - } - return nil -} - -func (m *URLFetchRequest) GetPayload() []byte { - if m != nil { - return m.Payload - } - return nil -} - -func (m *URLFetchRequest) GetFollowRedirects() bool { - if m != nil && m.FollowRedirects != nil { - return *m.FollowRedirects - } - return Default_URLFetchRequest_FollowRedirects -} - -func (m *URLFetchRequest) GetDeadline() float64 { - if m != nil && m.Deadline != nil { - return *m.Deadline - } - return 0 -} - -func (m *URLFetchRequest) GetMustValidateServerCertificate() bool { - if m != nil && m.MustValidateServerCertificate != nil { - return *m.MustValidateServerCertificate - } - return Default_URLFetchRequest_MustValidateServerCertificate -} - -type URLFetchRequest_Header struct { - Key *string `protobuf:"bytes,4,req" json:"Key,omitempty"` - Value *string `protobuf:"bytes,5,req" json:"Value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *URLFetchRequest_Header) Reset() { *m = URLFetchRequest_Header{} } -func (m *URLFetchRequest_Header) String() string { return proto.CompactTextString(m) } -func (*URLFetchRequest_Header) ProtoMessage() {} - -func (m *URLFetchRequest_Header) GetKey() string { - if m != nil && m.Key != nil { - return *m.Key - } - return "" -} - -func (m *URLFetchRequest_Header) GetValue() string { - if m != nil && m.Value != nil { - return *m.Value - } - return "" -} - -type URLFetchResponse struct { - Content []byte `protobuf:"bytes,1,opt" json:"Content,omitempty"` - StatusCode *int32 `protobuf:"varint,2,req" json:"StatusCode,omitempty"` - Header []*URLFetchResponse_Header `protobuf:"group,3,rep" json:"header,omitempty"` - ContentWasTruncated *bool `protobuf:"varint,6,opt,def=0" json:"ContentWasTruncated,omitempty"` - ExternalBytesSent *int64 `protobuf:"varint,7,opt" json:"ExternalBytesSent,omitempty"` - ExternalBytesReceived *int64 `protobuf:"varint,8,opt" json:"ExternalBytesReceived,omitempty"` - FinalUrl *string `protobuf:"bytes,9,opt" json:"FinalUrl,omitempty"` - ApiCpuMilliseconds *int64 `protobuf:"varint,10,opt,def=0" json:"ApiCpuMilliseconds,omitempty"` - ApiBytesSent *int64 `protobuf:"varint,11,opt,def=0" json:"ApiBytesSent,omitempty"` - ApiBytesReceived *int64 `protobuf:"varint,12,opt,def=0" json:"ApiBytesReceived,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *URLFetchResponse) Reset() { *m = URLFetchResponse{} } -func (m *URLFetchResponse) String() string { return proto.CompactTextString(m) } -func (*URLFetchResponse) ProtoMessage() {} - -const Default_URLFetchResponse_ContentWasTruncated bool = false -const Default_URLFetchResponse_ApiCpuMilliseconds int64 = 0 -const Default_URLFetchResponse_ApiBytesSent int64 = 0 -const Default_URLFetchResponse_ApiBytesReceived int64 = 0 - -func (m *URLFetchResponse) GetContent() []byte { - if m != nil { - return m.Content - } - return nil -} - -func (m *URLFetchResponse) GetStatusCode() int32 { - if m != nil && m.StatusCode != nil { - return *m.StatusCode - } - return 0 -} - -func (m *URLFetchResponse) GetHeader() []*URLFetchResponse_Header { - if m != nil { - return m.Header - } - return nil -} - -func (m *URLFetchResponse) GetContentWasTruncated() bool { - if m != nil && m.ContentWasTruncated != nil { - return *m.ContentWasTruncated - } - return Default_URLFetchResponse_ContentWasTruncated -} - -func (m *URLFetchResponse) GetExternalBytesSent() int64 { - if m != nil && m.ExternalBytesSent != nil { - return *m.ExternalBytesSent - } - return 0 -} - -func (m *URLFetchResponse) GetExternalBytesReceived() int64 { - if m != nil && m.ExternalBytesReceived != nil { - return *m.ExternalBytesReceived - } - return 0 -} - -func (m *URLFetchResponse) GetFinalUrl() string { - if m != nil && m.FinalUrl != nil { - return *m.FinalUrl - } - return "" -} - -func (m *URLFetchResponse) GetApiCpuMilliseconds() int64 { - if m != nil && m.ApiCpuMilliseconds != nil { - return *m.ApiCpuMilliseconds - } - return Default_URLFetchResponse_ApiCpuMilliseconds -} - -func (m *URLFetchResponse) GetApiBytesSent() int64 { - if m != nil && m.ApiBytesSent != nil { - return *m.ApiBytesSent - } - return Default_URLFetchResponse_ApiBytesSent -} - -func (m *URLFetchResponse) GetApiBytesReceived() int64 { - if m != nil && m.ApiBytesReceived != nil { - return *m.ApiBytesReceived - } - return Default_URLFetchResponse_ApiBytesReceived -} - -type URLFetchResponse_Header struct { - Key *string `protobuf:"bytes,4,req" json:"Key,omitempty"` - Value *string `protobuf:"bytes,5,req" json:"Value,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *URLFetchResponse_Header) Reset() { *m = URLFetchResponse_Header{} } -func (m *URLFetchResponse_Header) String() string { return proto.CompactTextString(m) } -func (*URLFetchResponse_Header) ProtoMessage() {} - -func (m *URLFetchResponse_Header) GetKey() string { - if m != nil && m.Key != nil { - return *m.Key - } - return "" -} - -func (m *URLFetchResponse_Header) GetValue() string { - if m != nil && m.Value != nil { - return *m.Value - } - return "" -} - -func init() { - proto.RegisterEnum("appengine.URLFetchServiceError_ErrorCode", URLFetchServiceError_ErrorCode_name, URLFetchServiceError_ErrorCode_value) - proto.RegisterEnum("appengine.URLFetchRequest_RequestMethod", URLFetchRequest_RequestMethod_name, URLFetchRequest_RequestMethod_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto deleted file mode 100644 index f695edf6a90..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +++ /dev/null @@ -1,64 +0,0 @@ -syntax = "proto2"; -option go_package = "urlfetch"; - -package appengine; - -message URLFetchServiceError { - enum ErrorCode { - OK = 0; - INVALID_URL = 1; - FETCH_ERROR = 2; - UNSPECIFIED_ERROR = 3; - RESPONSE_TOO_LARGE = 4; - DEADLINE_EXCEEDED = 5; - SSL_CERTIFICATE_ERROR = 6; - DNS_ERROR = 7; - CLOSED = 8; - INTERNAL_TRANSIENT_ERROR = 9; - TOO_MANY_REDIRECTS = 10; - MALFORMED_REPLY = 11; - CONNECTION_ERROR = 12; - } -} - -message URLFetchRequest { - enum RequestMethod { - GET = 1; - POST = 2; - HEAD = 3; - PUT = 4; - DELETE = 5; - PATCH = 6; - } - required RequestMethod Method = 1; - required string Url = 2; - repeated group Header = 3 { - required string Key = 4; - required string Value = 5; - } - optional bytes Payload = 6 [ctype=CORD]; - - optional bool FollowRedirects = 7 [default=true]; - - optional double Deadline = 8; - - optional bool MustValidateServerCertificate = 9 [default=true]; -} - -message URLFetchResponse { - optional bytes Content = 1; - required int32 StatusCode = 2; - repeated group Header = 3 { - required string Key = 4; - required string Value = 5; - } - optional bool ContentWasTruncated = 6 [default=false]; - optional int64 ExternalBytesSent = 7; - optional int64 ExternalBytesReceived = 8; - - optional string FinalUrl = 9; - - optional int64 ApiCpuMilliseconds = 10 [default=0]; - optional int64 ApiBytesSent = 11 [default=0]; - optional int64 ApiBytesReceived = 12 [default=0]; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.pb.go deleted file mode 100644 index 5d425accc0d..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.pb.go +++ /dev/null @@ -1,288 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/user/user_service.proto -// DO NOT EDIT! - -/* -Package user is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/user/user_service.proto - -It has these top-level messages: - UserServiceError - CreateLoginURLRequest - CreateLoginURLResponse - CreateLogoutURLRequest - CreateLogoutURLResponse - GetOAuthUserRequest - GetOAuthUserResponse - CheckOAuthSignatureRequest - CheckOAuthSignatureResponse -*/ -package user - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type UserServiceError_ErrorCode int32 - -const ( - UserServiceError_OK UserServiceError_ErrorCode = 0 - UserServiceError_REDIRECT_URL_TOO_LONG UserServiceError_ErrorCode = 1 - UserServiceError_NOT_ALLOWED UserServiceError_ErrorCode = 2 - UserServiceError_OAUTH_INVALID_TOKEN UserServiceError_ErrorCode = 3 - UserServiceError_OAUTH_INVALID_REQUEST UserServiceError_ErrorCode = 4 - UserServiceError_OAUTH_ERROR UserServiceError_ErrorCode = 5 -) - -var UserServiceError_ErrorCode_name = map[int32]string{ - 0: "OK", - 1: "REDIRECT_URL_TOO_LONG", - 2: "NOT_ALLOWED", - 3: "OAUTH_INVALID_TOKEN", - 4: "OAUTH_INVALID_REQUEST", - 5: "OAUTH_ERROR", -} -var UserServiceError_ErrorCode_value = map[string]int32{ - "OK": 0, - "REDIRECT_URL_TOO_LONG": 1, - "NOT_ALLOWED": 2, - "OAUTH_INVALID_TOKEN": 3, - "OAUTH_INVALID_REQUEST": 4, - "OAUTH_ERROR": 5, -} - -func (x UserServiceError_ErrorCode) Enum() *UserServiceError_ErrorCode { - p := new(UserServiceError_ErrorCode) - *p = x - return p -} -func (x UserServiceError_ErrorCode) String() string { - return proto.EnumName(UserServiceError_ErrorCode_name, int32(x)) -} -func (x *UserServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(UserServiceError_ErrorCode_value, data, "UserServiceError_ErrorCode") - if err != nil { - return err - } - *x = UserServiceError_ErrorCode(value) - return nil -} - -type UserServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *UserServiceError) Reset() { *m = UserServiceError{} } -func (m *UserServiceError) String() string { return proto.CompactTextString(m) } -func (*UserServiceError) ProtoMessage() {} - -type CreateLoginURLRequest struct { - DestinationUrl *string `protobuf:"bytes,1,req,name=destination_url" json:"destination_url,omitempty"` - AuthDomain *string `protobuf:"bytes,2,opt,name=auth_domain" json:"auth_domain,omitempty"` - FederatedIdentity *string `protobuf:"bytes,3,opt,name=federated_identity,def=" json:"federated_identity,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CreateLoginURLRequest) Reset() { *m = CreateLoginURLRequest{} } -func (m *CreateLoginURLRequest) String() string { return proto.CompactTextString(m) } -func (*CreateLoginURLRequest) ProtoMessage() {} - -func (m *CreateLoginURLRequest) GetDestinationUrl() string { - if m != nil && m.DestinationUrl != nil { - return *m.DestinationUrl - } - return "" -} - -func (m *CreateLoginURLRequest) GetAuthDomain() string { - if m != nil && m.AuthDomain != nil { - return *m.AuthDomain - } - return "" -} - -func (m *CreateLoginURLRequest) GetFederatedIdentity() string { - if m != nil && m.FederatedIdentity != nil { - return *m.FederatedIdentity - } - return "" -} - -type CreateLoginURLResponse struct { - LoginUrl *string `protobuf:"bytes,1,req,name=login_url" json:"login_url,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CreateLoginURLResponse) Reset() { *m = CreateLoginURLResponse{} } -func (m *CreateLoginURLResponse) String() string { return proto.CompactTextString(m) } -func (*CreateLoginURLResponse) ProtoMessage() {} - -func (m *CreateLoginURLResponse) GetLoginUrl() string { - if m != nil && m.LoginUrl != nil { - return *m.LoginUrl - } - return "" -} - -type CreateLogoutURLRequest struct { - DestinationUrl *string `protobuf:"bytes,1,req,name=destination_url" json:"destination_url,omitempty"` - AuthDomain *string `protobuf:"bytes,2,opt,name=auth_domain" json:"auth_domain,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CreateLogoutURLRequest) Reset() { *m = CreateLogoutURLRequest{} } -func (m *CreateLogoutURLRequest) String() string { return proto.CompactTextString(m) } -func (*CreateLogoutURLRequest) ProtoMessage() {} - -func (m *CreateLogoutURLRequest) GetDestinationUrl() string { - if m != nil && m.DestinationUrl != nil { - return *m.DestinationUrl - } - return "" -} - -func (m *CreateLogoutURLRequest) GetAuthDomain() string { - if m != nil && m.AuthDomain != nil { - return *m.AuthDomain - } - return "" -} - -type CreateLogoutURLResponse struct { - LogoutUrl *string `protobuf:"bytes,1,req,name=logout_url" json:"logout_url,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CreateLogoutURLResponse) Reset() { *m = CreateLogoutURLResponse{} } -func (m *CreateLogoutURLResponse) String() string { return proto.CompactTextString(m) } -func (*CreateLogoutURLResponse) ProtoMessage() {} - -func (m *CreateLogoutURLResponse) GetLogoutUrl() string { - if m != nil && m.LogoutUrl != nil { - return *m.LogoutUrl - } - return "" -} - -type GetOAuthUserRequest struct { - Scope *string `protobuf:"bytes,1,opt,name=scope" json:"scope,omitempty"` - Scopes []string `protobuf:"bytes,2,rep,name=scopes" json:"scopes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetOAuthUserRequest) Reset() { *m = GetOAuthUserRequest{} } -func (m *GetOAuthUserRequest) String() string { return proto.CompactTextString(m) } -func (*GetOAuthUserRequest) ProtoMessage() {} - -func (m *GetOAuthUserRequest) GetScope() string { - if m != nil && m.Scope != nil { - return *m.Scope - } - return "" -} - -func (m *GetOAuthUserRequest) GetScopes() []string { - if m != nil { - return m.Scopes - } - return nil -} - -type GetOAuthUserResponse struct { - Email *string `protobuf:"bytes,1,req,name=email" json:"email,omitempty"` - UserId *string `protobuf:"bytes,2,req,name=user_id" json:"user_id,omitempty"` - AuthDomain *string `protobuf:"bytes,3,req,name=auth_domain" json:"auth_domain,omitempty"` - UserOrganization *string `protobuf:"bytes,4,opt,name=user_organization,def=" json:"user_organization,omitempty"` - IsAdmin *bool `protobuf:"varint,5,opt,name=is_admin,def=0" json:"is_admin,omitempty"` - ClientId *string `protobuf:"bytes,6,opt,name=client_id,def=" json:"client_id,omitempty"` - Scopes []string `protobuf:"bytes,7,rep,name=scopes" json:"scopes,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *GetOAuthUserResponse) Reset() { *m = GetOAuthUserResponse{} } -func (m *GetOAuthUserResponse) String() string { return proto.CompactTextString(m) } -func (*GetOAuthUserResponse) ProtoMessage() {} - -const Default_GetOAuthUserResponse_IsAdmin bool = false - -func (m *GetOAuthUserResponse) GetEmail() string { - if m != nil && m.Email != nil { - return *m.Email - } - return "" -} - -func (m *GetOAuthUserResponse) GetUserId() string { - if m != nil && m.UserId != nil { - return *m.UserId - } - return "" -} - -func (m *GetOAuthUserResponse) GetAuthDomain() string { - if m != nil && m.AuthDomain != nil { - return *m.AuthDomain - } - return "" -} - -func (m *GetOAuthUserResponse) GetUserOrganization() string { - if m != nil && m.UserOrganization != nil { - return *m.UserOrganization - } - return "" -} - -func (m *GetOAuthUserResponse) GetIsAdmin() bool { - if m != nil && m.IsAdmin != nil { - return *m.IsAdmin - } - return Default_GetOAuthUserResponse_IsAdmin -} - -func (m *GetOAuthUserResponse) GetClientId() string { - if m != nil && m.ClientId != nil { - return *m.ClientId - } - return "" -} - -func (m *GetOAuthUserResponse) GetScopes() []string { - if m != nil { - return m.Scopes - } - return nil -} - -type CheckOAuthSignatureRequest struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *CheckOAuthSignatureRequest) Reset() { *m = CheckOAuthSignatureRequest{} } -func (m *CheckOAuthSignatureRequest) String() string { return proto.CompactTextString(m) } -func (*CheckOAuthSignatureRequest) ProtoMessage() {} - -type CheckOAuthSignatureResponse struct { - OauthConsumerKey *string `protobuf:"bytes,1,req,name=oauth_consumer_key" json:"oauth_consumer_key,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *CheckOAuthSignatureResponse) Reset() { *m = CheckOAuthSignatureResponse{} } -func (m *CheckOAuthSignatureResponse) String() string { return proto.CompactTextString(m) } -func (*CheckOAuthSignatureResponse) ProtoMessage() {} - -func (m *CheckOAuthSignatureResponse) GetOauthConsumerKey() string { - if m != nil && m.OauthConsumerKey != nil { - return *m.OauthConsumerKey - } - return "" -} - -func init() { - proto.RegisterEnum("appengine.UserServiceError_ErrorCode", UserServiceError_ErrorCode_name, UserServiceError_ErrorCode_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.proto deleted file mode 100644 index f3e9693462c..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/user/user_service.proto +++ /dev/null @@ -1,58 +0,0 @@ -syntax = "proto2"; -option go_package = "user"; - -package appengine; - -message UserServiceError { - enum ErrorCode { - OK = 0; - REDIRECT_URL_TOO_LONG = 1; - NOT_ALLOWED = 2; - OAUTH_INVALID_TOKEN = 3; - OAUTH_INVALID_REQUEST = 4; - OAUTH_ERROR = 5; - } -} - -message CreateLoginURLRequest { - required string destination_url = 1; - optional string auth_domain = 2; - optional string federated_identity = 3 [default = ""]; -} - -message CreateLoginURLResponse { - required string login_url = 1; -} - -message CreateLogoutURLRequest { - required string destination_url = 1; - optional string auth_domain = 2; -} - -message CreateLogoutURLResponse { - required string logout_url = 1; -} - -message GetOAuthUserRequest { - optional string scope = 1; - - repeated string scopes = 2; -} - -message GetOAuthUserResponse { - required string email = 1; - required string user_id = 2; - required string auth_domain = 3; - optional string user_organization = 4 [default = ""]; - optional bool is_admin = 5 [default = false]; - optional string client_id = 6 [default = ""]; - - repeated string scopes = 7; -} - -message CheckOAuthSignatureRequest { -} - -message CheckOAuthSignatureResponse { - required string oauth_consumer_key = 1; -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.pb.go b/Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.pb.go deleted file mode 100644 index db7f47aa788..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.pb.go +++ /dev/null @@ -1,428 +0,0 @@ -// Code generated by protoc-gen-go. -// source: google.golang.org/appengine/internal/xmpp/xmpp_service.proto -// DO NOT EDIT! - -/* -Package xmpp is a generated protocol buffer package. - -It is generated from these files: - google.golang.org/appengine/internal/xmpp/xmpp_service.proto - -It has these top-level messages: - XmppServiceError - PresenceRequest - PresenceResponse - BulkPresenceRequest - BulkPresenceResponse - XmppMessageRequest - XmppMessageResponse - XmppSendPresenceRequest - XmppSendPresenceResponse - XmppInviteRequest - XmppInviteResponse -*/ -package xmpp - -import proto "github.com/golang/protobuf/proto" -import math "math" - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = math.Inf - -type XmppServiceError_ErrorCode int32 - -const ( - XmppServiceError_UNSPECIFIED_ERROR XmppServiceError_ErrorCode = 1 - XmppServiceError_INVALID_JID XmppServiceError_ErrorCode = 2 - XmppServiceError_NO_BODY XmppServiceError_ErrorCode = 3 - XmppServiceError_INVALID_XML XmppServiceError_ErrorCode = 4 - XmppServiceError_INVALID_TYPE XmppServiceError_ErrorCode = 5 - XmppServiceError_INVALID_SHOW XmppServiceError_ErrorCode = 6 - XmppServiceError_EXCEEDED_MAX_SIZE XmppServiceError_ErrorCode = 7 - XmppServiceError_APPID_ALIAS_REQUIRED XmppServiceError_ErrorCode = 8 - XmppServiceError_NONDEFAULT_MODULE XmppServiceError_ErrorCode = 9 -) - -var XmppServiceError_ErrorCode_name = map[int32]string{ - 1: "UNSPECIFIED_ERROR", - 2: "INVALID_JID", - 3: "NO_BODY", - 4: "INVALID_XML", - 5: "INVALID_TYPE", - 6: "INVALID_SHOW", - 7: "EXCEEDED_MAX_SIZE", - 8: "APPID_ALIAS_REQUIRED", - 9: "NONDEFAULT_MODULE", -} -var XmppServiceError_ErrorCode_value = map[string]int32{ - "UNSPECIFIED_ERROR": 1, - "INVALID_JID": 2, - "NO_BODY": 3, - "INVALID_XML": 4, - "INVALID_TYPE": 5, - "INVALID_SHOW": 6, - "EXCEEDED_MAX_SIZE": 7, - "APPID_ALIAS_REQUIRED": 8, - "NONDEFAULT_MODULE": 9, -} - -func (x XmppServiceError_ErrorCode) Enum() *XmppServiceError_ErrorCode { - p := new(XmppServiceError_ErrorCode) - *p = x - return p -} -func (x XmppServiceError_ErrorCode) String() string { - return proto.EnumName(XmppServiceError_ErrorCode_name, int32(x)) -} -func (x *XmppServiceError_ErrorCode) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(XmppServiceError_ErrorCode_value, data, "XmppServiceError_ErrorCode") - if err != nil { - return err - } - *x = XmppServiceError_ErrorCode(value) - return nil -} - -type PresenceResponse_SHOW int32 - -const ( - PresenceResponse_NORMAL PresenceResponse_SHOW = 0 - PresenceResponse_AWAY PresenceResponse_SHOW = 1 - PresenceResponse_DO_NOT_DISTURB PresenceResponse_SHOW = 2 - PresenceResponse_CHAT PresenceResponse_SHOW = 3 - PresenceResponse_EXTENDED_AWAY PresenceResponse_SHOW = 4 -) - -var PresenceResponse_SHOW_name = map[int32]string{ - 0: "NORMAL", - 1: "AWAY", - 2: "DO_NOT_DISTURB", - 3: "CHAT", - 4: "EXTENDED_AWAY", -} -var PresenceResponse_SHOW_value = map[string]int32{ - "NORMAL": 0, - "AWAY": 1, - "DO_NOT_DISTURB": 2, - "CHAT": 3, - "EXTENDED_AWAY": 4, -} - -func (x PresenceResponse_SHOW) Enum() *PresenceResponse_SHOW { - p := new(PresenceResponse_SHOW) - *p = x - return p -} -func (x PresenceResponse_SHOW) String() string { - return proto.EnumName(PresenceResponse_SHOW_name, int32(x)) -} -func (x *PresenceResponse_SHOW) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(PresenceResponse_SHOW_value, data, "PresenceResponse_SHOW") - if err != nil { - return err - } - *x = PresenceResponse_SHOW(value) - return nil -} - -type XmppMessageResponse_XmppMessageStatus int32 - -const ( - XmppMessageResponse_NO_ERROR XmppMessageResponse_XmppMessageStatus = 0 - XmppMessageResponse_INVALID_JID XmppMessageResponse_XmppMessageStatus = 1 - XmppMessageResponse_OTHER_ERROR XmppMessageResponse_XmppMessageStatus = 2 -) - -var XmppMessageResponse_XmppMessageStatus_name = map[int32]string{ - 0: "NO_ERROR", - 1: "INVALID_JID", - 2: "OTHER_ERROR", -} -var XmppMessageResponse_XmppMessageStatus_value = map[string]int32{ - "NO_ERROR": 0, - "INVALID_JID": 1, - "OTHER_ERROR": 2, -} - -func (x XmppMessageResponse_XmppMessageStatus) Enum() *XmppMessageResponse_XmppMessageStatus { - p := new(XmppMessageResponse_XmppMessageStatus) - *p = x - return p -} -func (x XmppMessageResponse_XmppMessageStatus) String() string { - return proto.EnumName(XmppMessageResponse_XmppMessageStatus_name, int32(x)) -} -func (x *XmppMessageResponse_XmppMessageStatus) UnmarshalJSON(data []byte) error { - value, err := proto.UnmarshalJSONEnum(XmppMessageResponse_XmppMessageStatus_value, data, "XmppMessageResponse_XmppMessageStatus") - if err != nil { - return err - } - *x = XmppMessageResponse_XmppMessageStatus(value) - return nil -} - -type XmppServiceError struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *XmppServiceError) Reset() { *m = XmppServiceError{} } -func (m *XmppServiceError) String() string { return proto.CompactTextString(m) } -func (*XmppServiceError) ProtoMessage() {} - -type PresenceRequest struct { - Jid *string `protobuf:"bytes,1,req,name=jid" json:"jid,omitempty"` - FromJid *string `protobuf:"bytes,2,opt,name=from_jid" json:"from_jid,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PresenceRequest) Reset() { *m = PresenceRequest{} } -func (m *PresenceRequest) String() string { return proto.CompactTextString(m) } -func (*PresenceRequest) ProtoMessage() {} - -func (m *PresenceRequest) GetJid() string { - if m != nil && m.Jid != nil { - return *m.Jid - } - return "" -} - -func (m *PresenceRequest) GetFromJid() string { - if m != nil && m.FromJid != nil { - return *m.FromJid - } - return "" -} - -type PresenceResponse struct { - IsAvailable *bool `protobuf:"varint,1,req,name=is_available" json:"is_available,omitempty"` - Presence *PresenceResponse_SHOW `protobuf:"varint,2,opt,name=presence,enum=appengine.PresenceResponse_SHOW" json:"presence,omitempty"` - Valid *bool `protobuf:"varint,3,opt,name=valid" json:"valid,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *PresenceResponse) Reset() { *m = PresenceResponse{} } -func (m *PresenceResponse) String() string { return proto.CompactTextString(m) } -func (*PresenceResponse) ProtoMessage() {} - -func (m *PresenceResponse) GetIsAvailable() bool { - if m != nil && m.IsAvailable != nil { - return *m.IsAvailable - } - return false -} - -func (m *PresenceResponse) GetPresence() PresenceResponse_SHOW { - if m != nil && m.Presence != nil { - return *m.Presence - } - return PresenceResponse_NORMAL -} - -func (m *PresenceResponse) GetValid() bool { - if m != nil && m.Valid != nil { - return *m.Valid - } - return false -} - -type BulkPresenceRequest struct { - Jid []string `protobuf:"bytes,1,rep,name=jid" json:"jid,omitempty"` - FromJid *string `protobuf:"bytes,2,opt,name=from_jid" json:"from_jid,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *BulkPresenceRequest) Reset() { *m = BulkPresenceRequest{} } -func (m *BulkPresenceRequest) String() string { return proto.CompactTextString(m) } -func (*BulkPresenceRequest) ProtoMessage() {} - -func (m *BulkPresenceRequest) GetJid() []string { - if m != nil { - return m.Jid - } - return nil -} - -func (m *BulkPresenceRequest) GetFromJid() string { - if m != nil && m.FromJid != nil { - return *m.FromJid - } - return "" -} - -type BulkPresenceResponse struct { - PresenceResponse []*PresenceResponse `protobuf:"bytes,1,rep,name=presence_response" json:"presence_response,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *BulkPresenceResponse) Reset() { *m = BulkPresenceResponse{} } -func (m *BulkPresenceResponse) String() string { return proto.CompactTextString(m) } -func (*BulkPresenceResponse) ProtoMessage() {} - -func (m *BulkPresenceResponse) GetPresenceResponse() []*PresenceResponse { - if m != nil { - return m.PresenceResponse - } - return nil -} - -type XmppMessageRequest struct { - Jid []string `protobuf:"bytes,1,rep,name=jid" json:"jid,omitempty"` - Body *string `protobuf:"bytes,2,req,name=body" json:"body,omitempty"` - RawXml *bool `protobuf:"varint,3,opt,name=raw_xml,def=0" json:"raw_xml,omitempty"` - Type *string `protobuf:"bytes,4,opt,name=type,def=chat" json:"type,omitempty"` - FromJid *string `protobuf:"bytes,5,opt,name=from_jid" json:"from_jid,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *XmppMessageRequest) Reset() { *m = XmppMessageRequest{} } -func (m *XmppMessageRequest) String() string { return proto.CompactTextString(m) } -func (*XmppMessageRequest) ProtoMessage() {} - -const Default_XmppMessageRequest_RawXml bool = false -const Default_XmppMessageRequest_Type string = "chat" - -func (m *XmppMessageRequest) GetJid() []string { - if m != nil { - return m.Jid - } - return nil -} - -func (m *XmppMessageRequest) GetBody() string { - if m != nil && m.Body != nil { - return *m.Body - } - return "" -} - -func (m *XmppMessageRequest) GetRawXml() bool { - if m != nil && m.RawXml != nil { - return *m.RawXml - } - return Default_XmppMessageRequest_RawXml -} - -func (m *XmppMessageRequest) GetType() string { - if m != nil && m.Type != nil { - return *m.Type - } - return Default_XmppMessageRequest_Type -} - -func (m *XmppMessageRequest) GetFromJid() string { - if m != nil && m.FromJid != nil { - return *m.FromJid - } - return "" -} - -type XmppMessageResponse struct { - Status []XmppMessageResponse_XmppMessageStatus `protobuf:"varint,1,rep,name=status,enum=appengine.XmppMessageResponse_XmppMessageStatus" json:"status,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *XmppMessageResponse) Reset() { *m = XmppMessageResponse{} } -func (m *XmppMessageResponse) String() string { return proto.CompactTextString(m) } -func (*XmppMessageResponse) ProtoMessage() {} - -func (m *XmppMessageResponse) GetStatus() []XmppMessageResponse_XmppMessageStatus { - if m != nil { - return m.Status - } - return nil -} - -type XmppSendPresenceRequest struct { - Jid *string `protobuf:"bytes,1,req,name=jid" json:"jid,omitempty"` - Type *string `protobuf:"bytes,2,opt,name=type" json:"type,omitempty"` - Show *string `protobuf:"bytes,3,opt,name=show" json:"show,omitempty"` - Status *string `protobuf:"bytes,4,opt,name=status" json:"status,omitempty"` - FromJid *string `protobuf:"bytes,5,opt,name=from_jid" json:"from_jid,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *XmppSendPresenceRequest) Reset() { *m = XmppSendPresenceRequest{} } -func (m *XmppSendPresenceRequest) String() string { return proto.CompactTextString(m) } -func (*XmppSendPresenceRequest) ProtoMessage() {} - -func (m *XmppSendPresenceRequest) GetJid() string { - if m != nil && m.Jid != nil { - return *m.Jid - } - return "" -} - -func (m *XmppSendPresenceRequest) GetType() string { - if m != nil && m.Type != nil { - return *m.Type - } - return "" -} - -func (m *XmppSendPresenceRequest) GetShow() string { - if m != nil && m.Show != nil { - return *m.Show - } - return "" -} - -func (m *XmppSendPresenceRequest) GetStatus() string { - if m != nil && m.Status != nil { - return *m.Status - } - return "" -} - -func (m *XmppSendPresenceRequest) GetFromJid() string { - if m != nil && m.FromJid != nil { - return *m.FromJid - } - return "" -} - -type XmppSendPresenceResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *XmppSendPresenceResponse) Reset() { *m = XmppSendPresenceResponse{} } -func (m *XmppSendPresenceResponse) String() string { return proto.CompactTextString(m) } -func (*XmppSendPresenceResponse) ProtoMessage() {} - -type XmppInviteRequest struct { - Jid *string `protobuf:"bytes,1,req,name=jid" json:"jid,omitempty"` - FromJid *string `protobuf:"bytes,2,opt,name=from_jid" json:"from_jid,omitempty"` - XXX_unrecognized []byte `json:"-"` -} - -func (m *XmppInviteRequest) Reset() { *m = XmppInviteRequest{} } -func (m *XmppInviteRequest) String() string { return proto.CompactTextString(m) } -func (*XmppInviteRequest) ProtoMessage() {} - -func (m *XmppInviteRequest) GetJid() string { - if m != nil && m.Jid != nil { - return *m.Jid - } - return "" -} - -func (m *XmppInviteRequest) GetFromJid() string { - if m != nil && m.FromJid != nil { - return *m.FromJid - } - return "" -} - -type XmppInviteResponse struct { - XXX_unrecognized []byte `json:"-"` -} - -func (m *XmppInviteResponse) Reset() { *m = XmppInviteResponse{} } -func (m *XmppInviteResponse) String() string { return proto.CompactTextString(m) } -func (*XmppInviteResponse) ProtoMessage() {} - -func init() { - proto.RegisterEnum("appengine.XmppServiceError_ErrorCode", XmppServiceError_ErrorCode_name, XmppServiceError_ErrorCode_value) - proto.RegisterEnum("appengine.PresenceResponse_SHOW", PresenceResponse_SHOW_name, PresenceResponse_SHOW_value) - proto.RegisterEnum("appengine.XmppMessageResponse_XmppMessageStatus", XmppMessageResponse_XmppMessageStatus_name, XmppMessageResponse_XmppMessageStatus_value) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.proto b/Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.proto deleted file mode 100644 index 472d52ebf4f..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/internal/xmpp/xmpp_service.proto +++ /dev/null @@ -1,83 +0,0 @@ -syntax = "proto2"; -option go_package = "xmpp"; - -package appengine; - -message XmppServiceError { - enum ErrorCode { - UNSPECIFIED_ERROR = 1; - INVALID_JID = 2; - NO_BODY = 3; - INVALID_XML = 4; - INVALID_TYPE = 5; - INVALID_SHOW = 6; - EXCEEDED_MAX_SIZE = 7; - APPID_ALIAS_REQUIRED = 8; - NONDEFAULT_MODULE = 9; - } -} - -message PresenceRequest { - required string jid = 1; - optional string from_jid = 2; -} - -message PresenceResponse { - enum SHOW { - NORMAL = 0; - AWAY = 1; - DO_NOT_DISTURB = 2; - CHAT = 3; - EXTENDED_AWAY = 4; - } - - required bool is_available = 1; - optional SHOW presence = 2; - optional bool valid = 3; -} - -message BulkPresenceRequest { - repeated string jid = 1; - optional string from_jid = 2; -} - -message BulkPresenceResponse { - repeated PresenceResponse presence_response = 1; -} - -message XmppMessageRequest { - repeated string jid = 1; - required string body = 2; - optional bool raw_xml = 3 [ default = false ]; - optional string type = 4 [ default = "chat" ]; - optional string from_jid = 5; -} - -message XmppMessageResponse { - enum XmppMessageStatus { - NO_ERROR = 0; - INVALID_JID = 1; - OTHER_ERROR = 2; - } - - repeated XmppMessageStatus status = 1; -} - -message XmppSendPresenceRequest { - required string jid = 1; - optional string type = 2; - optional string show = 3; - optional string status = 4; - optional string from_jid = 5; -} - -message XmppSendPresenceResponse { -} - -message XmppInviteRequest { - required string jid = 1; - optional string from_jid = 2; -} - -message XmppInviteResponse { -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/log/log.go b/Godeps/_workspace/src/google.golang.org/appengine/log/log.go deleted file mode 100644 index 96f5bf80a7d..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/log/log.go +++ /dev/null @@ -1,322 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package log provides the means of querying an application's logs from -within an App Engine application. - -Example: - c := appengine.NewContext(r) - query := &log.Query{ - AppLogs: true, - Versions: []string{"1"}, - } - - for results := query.Run(c); ; { - record, err := results.Next() - if err == log.Done { - c.Infof("Done processing results") - break - } - if err != nil { - c.Errorf("Failed to retrieve next log: %v", err) - break - } - c.Infof("Saw record %v", record) - } -*/ -package log - -import ( - "errors" - "fmt" - "strings" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/log" -) - -// Query defines a logs query. -type Query struct { - // Start time specifies the earliest log to return (inclusive). - StartTime time.Time - - // End time specifies the latest log to return (exclusive). - EndTime time.Time - - // Offset specifies a position within the log stream to resume reading from, - // and should come from a previously returned Record's field of the same name. - Offset []byte - - // Incomplete controls whether active (incomplete) requests should be included. - Incomplete bool - - // AppLogs indicates if application-level logs should be included. - AppLogs bool - - // ApplyMinLevel indicates if MinLevel should be used to filter results. - ApplyMinLevel bool - - // If ApplyMinLevel is true, only logs for requests with at least one - // application log of MinLevel or higher will be returned. - MinLevel int - - // Versions is the major version IDs whose logs should be retrieved. - // Logs for specific modules can be retrieved by the specifying versions - // in the form "module:version"; the default module is used if no module - // is specified. - Versions []string - - // A list of requests to search for instead of a time-based scan. Cannot be - // combined with filtering options such as StartTime, EndTime, Offset, - // Incomplete, ApplyMinLevel, or Versions. - RequestIDs []string -} - -// AppLog represents a single application-level log. -type AppLog struct { - Time time.Time - Level int - Message string -} - -// Record contains all the information for a single web request. -type Record struct { - AppID string - ModuleID string - VersionID string - RequestID []byte - IP string - Nickname string - AppEngineRelease string - - // The time when this request started. - StartTime time.Time - - // The time when this request finished. - EndTime time.Time - - // Opaque cursor into the result stream. - Offset []byte - - // The time required to process the request. - Latency time.Duration - MCycles int64 - Method string - Resource string - HTTPVersion string - Status int32 - - // The size of the request sent back to the client, in bytes. - ResponseSize int64 - Referrer string - UserAgent string - URLMapEntry string - Combined string - Host string - - // The estimated cost of this request, in dollars. - Cost float64 - TaskQueueName string - TaskName string - WasLoadingRequest bool - PendingTime time.Duration - Finished bool - AppLogs []AppLog - - // Mostly-unique identifier for the instance that handled the request if available. - InstanceID string -} - -// Result represents the result of a query. -type Result struct { - logs []*Record - context appengine.Context - request *pb.LogReadRequest - resultsSeen bool - err error -} - -// Next returns the next log record, -func (qr *Result) Next() (*Record, error) { - if qr.err != nil { - return nil, qr.err - } - if len(qr.logs) > 0 { - lr := qr.logs[0] - qr.logs = qr.logs[1:] - return lr, nil - } - - if qr.request.Offset == nil && qr.resultsSeen { - return nil, Done - } - - if err := qr.run(); err != nil { - // Errors here may be retried, so don't store the error. - return nil, err - } - - return qr.Next() -} - -// Done is returned when a query iteration has completed. -var Done = errors.New("log: query has no more results") - -// protoToAppLogs takes as input an array of pointers to LogLines, the internal -// Protocol Buffer representation of a single application-level log, -// and converts it to an array of AppLogs, the external representation -// of an application-level log. -func protoToAppLogs(logLines []*pb.LogLine) []AppLog { - appLogs := make([]AppLog, len(logLines)) - - for i, line := range logLines { - appLogs[i] = AppLog{ - Time: time.Unix(0, *line.Time*1e3), - Level: int(*line.Level), - Message: *line.LogMessage, - } - } - - return appLogs -} - -// protoToRecord converts a RequestLog, the internal Protocol Buffer -// representation of a single request-level log, to a Record, its -// corresponding external representation. -func protoToRecord(rl *pb.RequestLog) *Record { - offset, err := proto.Marshal(rl.Offset) - if err != nil { - offset = nil - } - return &Record{ - AppID: *rl.AppId, - ModuleID: rl.GetModuleId(), - VersionID: *rl.VersionId, - RequestID: rl.RequestId, - Offset: offset, - IP: *rl.Ip, - Nickname: rl.GetNickname(), - AppEngineRelease: string(rl.GetAppEngineRelease()), - StartTime: time.Unix(0, *rl.StartTime*1e3), - EndTime: time.Unix(0, *rl.EndTime*1e3), - Latency: time.Duration(*rl.Latency) * time.Microsecond, - MCycles: *rl.Mcycles, - Method: *rl.Method, - Resource: *rl.Resource, - HTTPVersion: *rl.HttpVersion, - Status: *rl.Status, - ResponseSize: *rl.ResponseSize, - Referrer: rl.GetReferrer(), - UserAgent: rl.GetUserAgent(), - URLMapEntry: *rl.UrlMapEntry, - Combined: *rl.Combined, - Host: rl.GetHost(), - Cost: rl.GetCost(), - TaskQueueName: rl.GetTaskQueueName(), - TaskName: rl.GetTaskName(), - WasLoadingRequest: rl.GetWasLoadingRequest(), - PendingTime: time.Duration(rl.GetPendingTime()) * time.Microsecond, - Finished: rl.GetFinished(), - AppLogs: protoToAppLogs(rl.Line), - InstanceID: string(rl.GetCloneKey()), - } -} - -// Run starts a query for log records, which contain request and application -// level log information. -func (params *Query) Run(c appengine.Context) *Result { - req, err := makeRequest(params, c.FullyQualifiedAppID(), appengine.VersionID(c)) - return &Result{ - context: c, - request: req, - err: err, - } -} - -func makeRequest(params *Query, appID, versionID string) (*pb.LogReadRequest, error) { - req := &pb.LogReadRequest{} - req.AppId = &appID - if !params.StartTime.IsZero() { - req.StartTime = proto.Int64(params.StartTime.UnixNano() / 1e3) - } - if !params.EndTime.IsZero() { - req.EndTime = proto.Int64(params.EndTime.UnixNano() / 1e3) - } - if len(params.Offset) > 0 { - var offset pb.LogOffset - if err := proto.Unmarshal(params.Offset, &offset); err != nil { - return nil, fmt.Errorf("bad Offset: %v", err) - } - req.Offset = &offset - } - if params.Incomplete { - req.IncludeIncomplete = ¶ms.Incomplete - } - if params.AppLogs { - req.IncludeAppLogs = ¶ms.AppLogs - } - if params.ApplyMinLevel { - req.MinimumLogLevel = proto.Int32(int32(params.MinLevel)) - } - if params.Versions == nil { - // If no versions were specified, default to the default module at - // the major version being used by this module. - if i := strings.Index(versionID, "."); i >= 0 { - versionID = versionID[:i] - } - req.VersionId = []string{versionID} - } else { - req.ModuleVersion = make([]*pb.LogModuleVersion, 0, len(params.Versions)) - for _, v := range params.Versions { - var m *string - if i := strings.Index(v, ":"); i >= 0 { - m, v = proto.String(v[:i]), v[i+1:] - } - req.ModuleVersion = append(req.ModuleVersion, &pb.LogModuleVersion{ - ModuleId: m, - VersionId: proto.String(v), - }) - } - } - if params.RequestIDs != nil { - ids := make([][]byte, len(params.RequestIDs)) - for i, v := range params.RequestIDs { - ids[i] = []byte(v) - } - req.RequestId = ids - } - - return req, nil -} - -// run takes the query Result produced by a call to Run and updates it with -// more Records. The updated Result contains a new set of logs as well as an -// offset to where more logs can be found. We also convert the items in the -// response from their internal representations to external versions of the -// same structs. -func (r *Result) run() error { - res := &pb.LogReadResponse{} - if err := r.context.Call("logservice", "Read", r.request, res, nil); err != nil { - return err - } - - r.logs = make([]*Record, len(res.Log)) - r.request.Offset = res.Offset - r.resultsSeen = true - - for i, log := range res.Log { - r.logs[i] = protoToRecord(log) - } - - return nil -} - -func init() { - internal.RegisterErrorCodeMap("logservice", pb.LogServiceError_ErrorCode_name) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/log/log_test.go b/Godeps/_workspace/src/google.golang.org/appengine/log/log_test.go deleted file mode 100644 index 5d7e985a1ee..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/log/log_test.go +++ /dev/null @@ -1,108 +0,0 @@ -package log - -import ( - "reflect" - "testing" - "time" - - "github.com/golang/protobuf/proto" - - pb "google.golang.org/appengine/internal/log" -) - -func TestQueryToRequest(t *testing.T) { - testCases := []struct { - desc string - query *Query - want *pb.LogReadRequest - }{ - { - desc: "Empty", - query: &Query{}, - want: &pb.LogReadRequest{ - AppId: proto.String("s~fake"), - VersionId: []string{"v12"}, - }, - }, - { - desc: "Versions", - query: &Query{ - Versions: []string{"alpha", "backend:beta"}, - }, - want: &pb.LogReadRequest{ - AppId: proto.String("s~fake"), - ModuleVersion: []*pb.LogModuleVersion{ - { - VersionId: proto.String("alpha"), - }, { - ModuleId: proto.String("backend"), - VersionId: proto.String("beta"), - }, - }, - }, - }, - } - - for _, tt := range testCases { - req, err := makeRequest(tt.query, "s~fake", "v12") - - if err != nil { - t.Errorf("%s: got err %v, want nil", tt.desc, err) - continue - } - if !proto.Equal(req, tt.want) { - t.Errorf("%s request:\ngot %v\nwant %v", tt.desc, req, tt.want) - } - } -} - -func TestProtoToRecord(t *testing.T) { - // We deliberately leave ModuleId and other optional fields unset. - p := &pb.RequestLog{ - AppId: proto.String("s~fake"), - VersionId: proto.String("1"), - RequestId: []byte("deadbeef"), - Ip: proto.String("127.0.0.1"), - StartTime: proto.Int64(431044244000000), - EndTime: proto.Int64(431044724000000), - Latency: proto.Int64(480000000), - Mcycles: proto.Int64(7), - Method: proto.String("GET"), - Resource: proto.String("/app"), - HttpVersion: proto.String("1.1"), - Status: proto.Int32(418), - ResponseSize: proto.Int64(1337), - UrlMapEntry: proto.String("_go_app"), - Combined: proto.String("apache log"), - } - // Sanity check that all required fields are set. - if _, err := proto.Marshal(p); err != nil { - t.Fatalf("proto.Marshal: %v", err) - } - want := &Record{ - AppID: "s~fake", - ModuleID: "default", - VersionID: "1", - RequestID: []byte("deadbeef"), - IP: "127.0.0.1", - StartTime: time.Date(1983, 8, 29, 22, 30, 44, 0, time.UTC), - EndTime: time.Date(1983, 8, 29, 22, 38, 44, 0, time.UTC), - Latency: 8 * time.Minute, - MCycles: 7, - Method: "GET", - Resource: "/app", - HTTPVersion: "1.1", - Status: 418, - ResponseSize: 1337, - URLMapEntry: "_go_app", - Combined: "apache log", - Finished: true, - AppLogs: []AppLog{}, - } - got := protoToRecord(p) - // Coerce locations to UTC since otherwise they will be in local. - got.StartTime, got.EndTime = got.StartTime.UTC(), got.EndTime.UTC() - if !reflect.DeepEqual(got, want) { - t.Errorf("protoToRecord:\ngot: %v\nwant: %v", got, want) - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/mail/mail.go b/Godeps/_workspace/src/google.golang.org/appengine/mail/mail.go deleted file mode 100644 index f9796ee064e..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/mail/mail.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package mail provides the means of sending email from an -App Engine application. - -Example: - msg := &mail.Message{ - Sender: "romeo@montague.com", - To: []string{"Juliet "}, - Subject: "See you tonight", - Body: "Don't forget our plans. Hark, 'til later.", - } - if err := mail.Send(c, msg); err != nil { - c.Errorf("Alas, my user, the email failed to sendeth: %v", err) - } -*/ -package mail - -import ( - "net/mail" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - bpb "google.golang.org/appengine/internal/base" - pb "google.golang.org/appengine/internal/mail" -) - -// A Message represents an email message. -// Addresses may be of any form permitted by RFC 822. -type Message struct { - // Sender must be set, and must be either an application admin - // or the currently signed-in user. - Sender string - ReplyTo string // may be empty - - // At least one of these slices must have a non-zero length, - // except when calling SendToAdmins. - To, Cc, Bcc []string - - Subject string - - // At least one of Body or HTMLBody must be non-empty. - Body string - HTMLBody string - - Attachments []Attachment - - // Extra mail headers. - // See https://cloud.google.com/appengine/docs/go/mail/ - // for permissible headers. - Headers mail.Header -} - -// An Attachment represents an email attachment. -type Attachment struct { - // Name must be set to a valid file name. - Name string - Data []byte - ContentID string -} - -// Send sends an email message. -func Send(c appengine.Context, msg *Message) error { - return send(c, "Send", msg) -} - -// SendToAdmins sends an email message to the application's administrators. -func SendToAdmins(c appengine.Context, msg *Message) error { - return send(c, "SendToAdmins", msg) -} - -func send(c appengine.Context, method string, msg *Message) error { - req := &pb.MailMessage{ - Sender: &msg.Sender, - To: msg.To, - Cc: msg.Cc, - Bcc: msg.Bcc, - Subject: &msg.Subject, - } - if msg.ReplyTo != "" { - req.ReplyTo = &msg.ReplyTo - } - if msg.Body != "" { - req.TextBody = &msg.Body - } - if msg.HTMLBody != "" { - req.HtmlBody = &msg.HTMLBody - } - if len(msg.Attachments) > 0 { - req.Attachment = make([]*pb.MailAttachment, len(msg.Attachments)) - for i, att := range msg.Attachments { - req.Attachment[i] = &pb.MailAttachment{ - FileName: proto.String(att.Name), - Data: att.Data, - } - if att.ContentID != "" { - req.Attachment[i].ContentID = proto.String(att.ContentID) - } - } - } - for key, vs := range msg.Headers { - for _, v := range vs { - req.Header = append(req.Header, &pb.MailHeader{ - Name: proto.String(key), - Value: proto.String(v), - }) - } - } - res := &bpb.VoidProto{} - if err := c.Call("mail", method, req, res, nil); err != nil { - return err - } - return nil -} - -func init() { - internal.RegisterErrorCodeMap("mail", pb.MailServiceError_ErrorCode_name) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/mail/mail_test.go b/Godeps/_workspace/src/google.golang.org/appengine/mail/mail_test.go deleted file mode 100644 index 7502c5973ad..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/mail/mail_test.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package mail - -import ( - "testing" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal/aetesting" - basepb "google.golang.org/appengine/internal/base" - pb "google.golang.org/appengine/internal/mail" -) - -func TestMessageConstruction(t *testing.T) { - var got *pb.MailMessage - c := aetesting.FakeSingleContext(t, "mail", "Send", func(in *pb.MailMessage, out *basepb.VoidProto) error { - got = in - return nil - }) - - msg := &Message{ - Sender: "dsymonds@example.com", - To: []string{"nigeltao@example.com"}, - Body: "Hey, lunch time?", - Attachments: []Attachment{ - // Regression test for a prod bug. The address of a range variable was used when - // constructing the outgoing proto, so multiple attachments used the same name. - { - Name: "att1.txt", - Data: []byte("data1"), - ContentID: "", - }, - { - Name: "att2.txt", - Data: []byte("data2"), - }, - }, - } - if err := Send(c, msg); err != nil { - t.Fatalf("Send: %v", err) - } - want := &pb.MailMessage{ - Sender: proto.String("dsymonds@example.com"), - To: []string{"nigeltao@example.com"}, - Subject: proto.String(""), - TextBody: proto.String("Hey, lunch time?"), - Attachment: []*pb.MailAttachment{ - { - FileName: proto.String("att1.txt"), - Data: []byte("data1"), - ContentID: proto.String(""), - }, - { - FileName: proto.String("att2.txt"), - Data: []byte("data2"), - }, - }, - } - if !proto.Equal(got, want) { - t.Errorf("Bad proto for %+v\n got %v\nwant %v", msg, got, want) - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache.go b/Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache.go deleted file mode 100644 index 4324d35dff5..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache.go +++ /dev/null @@ -1,525 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package memcache provides a client for App Engine's distributed in-memory -// key-value store for small chunks of arbitrary data. -// -// The fundamental operations get and set items, keyed by a string. -// -// item0, err := memcache.Get(c, "key") -// if err != nil && err != memcache.ErrCacheMiss { -// return err -// } -// if err == nil { -// fmt.Fprintf(w, "memcache hit: Key=%q Val=[% x]\n", item0.Key, item0.Value) -// } else { -// fmt.Fprintf(w, "memcache miss\n") -// } -// -// and -// -// item1 := &memcache.Item{ -// Key: "foo", -// Value: []byte("bar"), -// } -// if err := memcache.Set(c, item1); err != nil { -// return err -// } -package memcache - -import ( - "bytes" - "encoding/gob" - "encoding/json" - "errors" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/memcache" -) - -var ( - // ErrCacheMiss means that an operation failed - // because the item wasn't present. - ErrCacheMiss = errors.New("memcache: cache miss") - // ErrCASConflict means that a CompareAndSwap call failed due to the - // cached value being modified between the Get and the CompareAndSwap. - // If the cached value was simply evicted rather than replaced, - // ErrNotStored will be returned instead. - ErrCASConflict = errors.New("memcache: compare-and-swap conflict") - // ErrNoStats means that no statistics were available. - ErrNoStats = errors.New("memcache: no statistics available") - // ErrNotStored means that a conditional write operation (i.e. Add or - // CompareAndSwap) failed because the condition was not satisfied. - ErrNotStored = errors.New("memcache: item not stored") - // ErrServerError means that a server error occurred. - ErrServerError = errors.New("memcache: server error") -) - -// Item is the unit of memcache gets and sets. -type Item struct { - // Key is the Item's key (250 bytes maximum). - Key string - // Value is the Item's value. - Value []byte - // Object is the Item's value for use with a Codec. - Object interface{} - // Flags are server-opaque flags whose semantics are entirely up to the - // App Engine app. - Flags uint32 - // Expiration is the maximum duration that the item will stay - // in the cache. - // The zero value means the Item has no expiration time. - // Subsecond precision is ignored. - // This is not set when getting items. - Expiration time.Duration - // casID is a client-opaque value used for compare-and-swap operations. - // Zero means that compare-and-swap is not used. - casID uint64 -} - -const ( - secondsIn30Years = 60 * 60 * 24 * 365 * 30 // from memcache server code - thirtyYears = time.Duration(secondsIn30Years) * time.Second -) - -// protoToItem converts a protocol buffer item to a Go struct. -func protoToItem(p *pb.MemcacheGetResponse_Item) *Item { - return &Item{ - Key: string(p.Key), - Value: p.Value, - Flags: p.GetFlags(), - casID: p.GetCasId(), - } -} - -// If err is an appengine.MultiError, return its first element. Otherwise, return err. -func singleError(err error) error { - if me, ok := err.(appengine.MultiError); ok { - return me[0] - } - return err -} - -// Get gets the item for the given key. ErrCacheMiss is returned for a memcache -// cache miss. The key must be at most 250 bytes in length. -func Get(c appengine.Context, key string) (*Item, error) { - m, err := GetMulti(c, []string{key}) - if err != nil { - return nil, err - } - if _, ok := m[key]; !ok { - return nil, ErrCacheMiss - } - return m[key], nil -} - -// GetMulti is a batch version of Get. The returned map from keys to items may -// have fewer elements than the input slice, due to memcache cache misses. -// Each key must be at most 250 bytes in length. -func GetMulti(c appengine.Context, key []string) (map[string]*Item, error) { - if len(key) == 0 { - return nil, nil - } - keyAsBytes := make([][]byte, len(key)) - for i, k := range key { - keyAsBytes[i] = []byte(k) - } - req := &pb.MemcacheGetRequest{ - Key: keyAsBytes, - ForCas: proto.Bool(true), - } - res := &pb.MemcacheGetResponse{} - if err := c.Call("memcache", "Get", req, res, nil); err != nil { - return nil, err - } - m := make(map[string]*Item, len(res.Item)) - for _, p := range res.Item { - t := protoToItem(p) - m[t.Key] = t - } - return m, nil -} - -// Delete deletes the item for the given key. -// ErrCacheMiss is returned if the specified item can not be found. -// The key must be at most 250 bytes in length. -func Delete(c appengine.Context, key string) error { - return singleError(DeleteMulti(c, []string{key})) -} - -// DeleteMulti is a batch version of Delete. -// If any keys cannot be found, an appengine.MultiError is returned. -// Each key must be at most 250 bytes in length. -func DeleteMulti(c appengine.Context, key []string) error { - if len(key) == 0 { - return nil - } - req := &pb.MemcacheDeleteRequest{ - Item: make([]*pb.MemcacheDeleteRequest_Item, len(key)), - } - for i, k := range key { - req.Item[i] = &pb.MemcacheDeleteRequest_Item{Key: []byte(k)} - } - res := &pb.MemcacheDeleteResponse{} - if err := c.Call("memcache", "Delete", req, res, nil); err != nil { - return err - } - if len(res.DeleteStatus) != len(key) { - return ErrServerError - } - me, any := make(appengine.MultiError, len(key)), false - for i, s := range res.DeleteStatus { - switch s { - case pb.MemcacheDeleteResponse_DELETED: - // OK - case pb.MemcacheDeleteResponse_NOT_FOUND: - me[i] = ErrCacheMiss - any = true - default: - me[i] = ErrServerError - any = true - } - } - if any { - return me - } - return nil -} - -// Increment atomically increments the decimal value in the given key -// by delta and returns the new value. The value must fit in a uint64. -// Overflow wraps around, and underflow is capped to zero. The -// provided delta may be negative. If the key doesn't exist in -// memcacheg, the provided initial value is used to atomically -// populate it before the delta is applied. -// The key must be at most 250 bytes in length. -func Increment(c appengine.Context, key string, delta int64, initialValue uint64) (newValue uint64, err error) { - return incr(c, key, delta, &initialValue) -} - -// IncrementExisting works like Increment but assumes that the key -// already exists in memcache and doesn't take an initial value. -// IncrementExisting can save work if calculating the initial value is -// expensive. -// An error is returned if the specified item can not be found. -func IncrementExisting(c appengine.Context, key string, delta int64) (newValue uint64, err error) { - return incr(c, key, delta, nil) -} - -func incr(c appengine.Context, key string, delta int64, initialValue *uint64) (newValue uint64, err error) { - req := &pb.MemcacheIncrementRequest{ - Key: []byte(key), - InitialValue: initialValue, - } - if delta >= 0 { - req.Delta = proto.Uint64(uint64(delta)) - } else { - req.Delta = proto.Uint64(uint64(-delta)) - req.Direction = pb.MemcacheIncrementRequest_DECREMENT.Enum() - } - res := &pb.MemcacheIncrementResponse{} - err = c.Call("memcache", "Increment", req, res, nil) - if err != nil { - return - } - if res.NewValue == nil { - return 0, ErrCacheMiss - } - return *res.NewValue, nil -} - -// set sets the given items using the given conflict resolution policy. -// appengine.MultiError may be returned. -func set(c appengine.Context, item []*Item, value [][]byte, policy pb.MemcacheSetRequest_SetPolicy) error { - if len(item) == 0 { - return nil - } - req := &pb.MemcacheSetRequest{ - Item: make([]*pb.MemcacheSetRequest_Item, len(item)), - } - for i, t := range item { - p := &pb.MemcacheSetRequest_Item{ - Key: []byte(t.Key), - } - if value == nil { - p.Value = t.Value - } else { - p.Value = value[i] - } - if t.Flags != 0 { - p.Flags = proto.Uint32(t.Flags) - } - if t.Expiration != 0 { - // In the .proto file, MemcacheSetRequest_Item uses a fixed32 (i.e. unsigned) - // for expiration time, while MemcacheGetRequest_Item uses int32 (i.e. signed). - // Throughout this .go file, we use int32. - // Also, in the proto, the expiration value is either a duration (in seconds) - // or an absolute Unix timestamp (in seconds), depending on whether the - // value is less than or greater than or equal to 30 years, respectively. - if t.Expiration < time.Second { - // Because an Expiration of 0 means no expiration, we take - // care here to translate an item with an expiration - // Duration between 0-1 seconds as immediately expiring - // (saying it expired a few seconds ago), rather than - // rounding it down to 0 and making it live forever. - p.ExpirationTime = proto.Uint32(uint32(time.Now().Unix()) - 5) - } else if t.Expiration >= thirtyYears { - p.ExpirationTime = proto.Uint32(uint32(time.Now().Unix()) + uint32(t.Expiration/time.Second)) - } else { - p.ExpirationTime = proto.Uint32(uint32(t.Expiration / time.Second)) - } - } - if t.casID != 0 { - p.CasId = proto.Uint64(t.casID) - p.ForCas = proto.Bool(true) - } - p.SetPolicy = policy.Enum() - req.Item[i] = p - } - res := &pb.MemcacheSetResponse{} - if err := c.Call("memcache", "Set", req, res, nil); err != nil { - return err - } - if len(res.SetStatus) != len(item) { - return ErrServerError - } - me, any := make(appengine.MultiError, len(item)), false - for i, st := range res.SetStatus { - var err error - switch st { - case pb.MemcacheSetResponse_STORED: - // OK - case pb.MemcacheSetResponse_NOT_STORED: - err = ErrNotStored - case pb.MemcacheSetResponse_EXISTS: - err = ErrCASConflict - default: - err = ErrServerError - } - if err != nil { - me[i] = err - any = true - } - } - if any { - return me - } - return nil -} - -// Set writes the given item, unconditionally. -func Set(c appengine.Context, item *Item) error { - return singleError(set(c, []*Item{item}, nil, pb.MemcacheSetRequest_SET)) -} - -// SetMulti is a batch version of Set. -// appengine.MultiError may be returned. -func SetMulti(c appengine.Context, item []*Item) error { - return set(c, item, nil, pb.MemcacheSetRequest_SET) -} - -// Add writes the given item, if no value already exists for its key. -// ErrNotStored is returned if that condition is not met. -func Add(c appengine.Context, item *Item) error { - return singleError(set(c, []*Item{item}, nil, pb.MemcacheSetRequest_ADD)) -} - -// AddMulti is a batch version of Add. -// appengine.MultiError may be returned. -func AddMulti(c appengine.Context, item []*Item) error { - return set(c, item, nil, pb.MemcacheSetRequest_ADD) -} - -// CompareAndSwap writes the given item that was previously returned by Get, -// if the value was neither modified or evicted between the Get and the -// CompareAndSwap calls. The item's Key should not change between calls but -// all other item fields may differ. -// ErrCASConflict is returned if the value was modified in between the calls. -// ErrNotStored is returned if the value was evicted in between the calls. -func CompareAndSwap(c appengine.Context, item *Item) error { - return singleError(set(c, []*Item{item}, nil, pb.MemcacheSetRequest_CAS)) -} - -// CompareAndSwapMulti is a batch version of CompareAndSwap. -// appengine.MultiError may be returned. -func CompareAndSwapMulti(c appengine.Context, item []*Item) error { - return set(c, item, nil, pb.MemcacheSetRequest_CAS) -} - -// Codec represents a symmetric pair of functions that implement a codec. -// Items stored into or retrieved from memcache using a Codec have their -// values marshaled or unmarshaled. -// -// All the methods provided for Codec behave analogously to the package level -// function with same name. -type Codec struct { - Marshal func(interface{}) ([]byte, error) - Unmarshal func([]byte, interface{}) error -} - -// Get gets the item for the given key and decodes the obtained value into v. -// ErrCacheMiss is returned for a memcache cache miss. -// The key must be at most 250 bytes in length. -func (cd Codec) Get(c appengine.Context, key string, v interface{}) (*Item, error) { - i, err := Get(c, key) - if err != nil { - return nil, err - } - if err := cd.Unmarshal(i.Value, v); err != nil { - return nil, err - } - return i, nil -} - -func (cd Codec) set(c appengine.Context, items []*Item, policy pb.MemcacheSetRequest_SetPolicy) error { - var vs [][]byte - var me appengine.MultiError - for i, item := range items { - v, err := cd.Marshal(item.Object) - if err != nil { - if me == nil { - me = make(appengine.MultiError, len(items)) - } - me[i] = err - continue - } - if me == nil { - vs = append(vs, v) - } - } - if me != nil { - return me - } - - return set(c, items, vs, policy) -} - -// Set writes the given item, unconditionally. -func (cd Codec) Set(c appengine.Context, item *Item) error { - return singleError(cd.set(c, []*Item{item}, pb.MemcacheSetRequest_SET)) -} - -// SetMulti is a batch version of Set. -// appengine.MultiError may be returned. -func (cd Codec) SetMulti(c appengine.Context, items []*Item) error { - return cd.set(c, items, pb.MemcacheSetRequest_SET) -} - -// Add writes the given item, if no value already exists for its key. -// ErrNotStored is returned if that condition is not met. -func (cd Codec) Add(c appengine.Context, item *Item) error { - return singleError(cd.set(c, []*Item{item}, pb.MemcacheSetRequest_ADD)) -} - -// AddMulti is a batch version of Add. -// appengine.MultiError may be returned. -func (cd Codec) AddMulti(c appengine.Context, items []*Item) error { - return cd.set(c, items, pb.MemcacheSetRequest_ADD) -} - -// CompareAndSwap writes the given item that was previously returned by Get, -// if the value was neither modified or evicted between the Get and the -// CompareAndSwap calls. The item's Key should not change between calls but -// all other item fields may differ. -// ErrCASConflict is returned if the value was modified in between the calls. -// ErrNotStored is returned if the value was evicted in between the calls. -func (cd Codec) CompareAndSwap(c appengine.Context, item *Item) error { - return singleError(cd.set(c, []*Item{item}, pb.MemcacheSetRequest_CAS)) -} - -// CompareAndSwapMulti is a batch version of CompareAndSwap. -// appengine.MultiError may be returned. -func (cd Codec) CompareAndSwapMulti(c appengine.Context, items []*Item) error { - return cd.set(c, items, pb.MemcacheSetRequest_CAS) -} - -var ( - // Gob is a Codec that uses the gob package. - Gob = Codec{gobMarshal, gobUnmarshal} - // JSON is a Codec that uses the json package. - JSON = Codec{json.Marshal, json.Unmarshal} -) - -func gobMarshal(v interface{}) ([]byte, error) { - var buf bytes.Buffer - if err := gob.NewEncoder(&buf).Encode(v); err != nil { - return nil, err - } - return buf.Bytes(), nil -} - -func gobUnmarshal(data []byte, v interface{}) error { - return gob.NewDecoder(bytes.NewBuffer(data)).Decode(v) -} - -// Statistics represents a set of statistics about the memcache cache. -// This may include items that have expired but have not yet been removed from the cache. -type Statistics struct { - Hits uint64 // Counter of cache hits - Misses uint64 // Counter of cache misses - ByteHits uint64 // Counter of bytes transferred for gets - - Items uint64 // Items currently in the cache - Bytes uint64 // Size of all items currently in the cache - - Oldest int64 // Age of access of the oldest item, in seconds -} - -// Stats retrieves the current memcache statistics. -func Stats(c appengine.Context) (*Statistics, error) { - req := &pb.MemcacheStatsRequest{} - res := &pb.MemcacheStatsResponse{} - if err := c.Call("memcache", "Stats", req, res, nil); err != nil { - return nil, err - } - if res.Stats == nil { - return nil, ErrNoStats - } - return &Statistics{ - Hits: *res.Stats.Hits, - Misses: *res.Stats.Misses, - ByteHits: *res.Stats.ByteHits, - Items: *res.Stats.Items, - Bytes: *res.Stats.Bytes, - Oldest: int64(*res.Stats.OldestItemAge), - }, nil -} - -// Flush flushes all items from memcache. -func Flush(c appengine.Context) error { - req := &pb.MemcacheFlushRequest{} - res := &pb.MemcacheFlushResponse{} - return c.Call("memcache", "FlushAll", req, res, nil) -} - -func namespaceMod(m proto.Message, namespace string) { - switch m := m.(type) { - case *pb.MemcacheDeleteRequest: - if m.NameSpace == nil { - m.NameSpace = &namespace - } - case *pb.MemcacheGetRequest: - if m.NameSpace == nil { - m.NameSpace = &namespace - } - case *pb.MemcacheIncrementRequest: - if m.NameSpace == nil { - m.NameSpace = &namespace - } - case *pb.MemcacheSetRequest: - if m.NameSpace == nil { - m.NameSpace = &namespace - } - // MemcacheFlushRequest, MemcacheStatsRequest do not apply namespace. - } -} - -func init() { - internal.RegisterErrorCodeMap("memcache", pb.MemcacheServiceError_ErrorCode_name) - internal.NamespaceMods["memcache"] = namespaceMod -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache_test.go b/Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache_test.go deleted file mode 100644 index 70e38307793..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/memcache/memcache_test.go +++ /dev/null @@ -1,255 +0,0 @@ -package memcache - -import ( - "fmt" - "testing" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal/aetesting" - pb "google.golang.org/appengine/internal/memcache" -) - -var errRPC = fmt.Errorf("RPC error") - -func TestGetRequest(t *testing.T) { - serviceCalled := false - apiKey := "lyric" - - c := aetesting.FakeSingleContext(t, "memcache", "Get", func(req *pb.MemcacheGetRequest, _ *pb.MemcacheGetResponse) error { - // Test request. - if n := len(req.Key); n != 1 { - t.Errorf("got %d want 1", n) - return nil - } - if k := string(req.Key[0]); k != apiKey { - t.Errorf("got %q want %q", k, apiKey) - } - - serviceCalled = true - return nil - }) - - // Test the "forward" path from the API call parameters to the - // protobuf request object. (The "backward" path from the - // protobuf response object to the API call response, - // including the error response, are handled in the next few - // tests). - Get(c, apiKey) - if !serviceCalled { - t.Error("Service was not called as expected") - } -} - -func TestGetResponseHit(t *testing.T) { - key := "lyric" - value := "Where the buffalo roam" - - c := aetesting.FakeSingleContext(t, "memcache", "Get", func(_ *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { - res.Item = []*pb.MemcacheGetResponse_Item{ - {Key: []byte(key), Value: []byte(value)}, - } - return nil - }) - apiItem, err := Get(c, key) - if apiItem == nil || apiItem.Key != key || string(apiItem.Value) != value { - t.Errorf("got %q, %q want {%q,%q}, nil", apiItem, err, key, value) - } -} - -func TestGetResponseMiss(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Get", func(_ *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { - // don't fill in any of the response - return nil - }) - _, err := Get(c, "something") - if err != ErrCacheMiss { - t.Errorf("got %v want ErrCacheMiss", err) - } -} - -func TestGetResponseRPCError(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Get", func(_ *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { - return errRPC - }) - - if _, err := Get(c, "something"); err != errRPC { - t.Errorf("got %v want errRPC", err) - } -} - -func TestAddRequest(t *testing.T) { - var apiItem = &Item{ - Key: "lyric", - Value: []byte("Oh, give me a home"), - } - - serviceCalled := false - - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(req *pb.MemcacheSetRequest, _ *pb.MemcacheSetResponse) error { - // Test request. - pbItem := req.Item[0] - if k := string(pbItem.Key); k != apiItem.Key { - t.Errorf("got %q want %q", k, apiItem.Key) - } - if v := string(apiItem.Value); v != string(pbItem.Value) { - t.Errorf("got %q want %q", v, string(pbItem.Value)) - } - if p := *pbItem.SetPolicy; p != pb.MemcacheSetRequest_ADD { - t.Errorf("got %v want %v", p, pb.MemcacheSetRequest_ADD) - } - - serviceCalled = true - return nil - }) - - Add(c, apiItem) - if !serviceCalled { - t.Error("Service was not called as expected") - } -} - -func TestAddResponseStored(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(_ *pb.MemcacheSetRequest, res *pb.MemcacheSetResponse) error { - res.SetStatus = []pb.MemcacheSetResponse_SetStatusCode{pb.MemcacheSetResponse_STORED} - return nil - }) - - if err := Add(c, &Item{}); err != nil { - t.Errorf("got %v want nil", err) - } -} - -func TestAddResponseNotStored(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(_ *pb.MemcacheSetRequest, res *pb.MemcacheSetResponse) error { - res.SetStatus = []pb.MemcacheSetResponse_SetStatusCode{pb.MemcacheSetResponse_NOT_STORED} - return nil - }) - - if err := Add(c, &Item{}); err != ErrNotStored { - t.Errorf("got %v want ErrNotStored", err) - } -} - -func TestAddResponseError(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(_ *pb.MemcacheSetRequest, res *pb.MemcacheSetResponse) error { - res.SetStatus = []pb.MemcacheSetResponse_SetStatusCode{pb.MemcacheSetResponse_ERROR} - return nil - }) - - if err := Add(c, &Item{}); err != ErrServerError { - t.Errorf("got %v want ErrServerError", err) - } -} - -func TestAddResponseRPCError(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(_ *pb.MemcacheSetRequest, res *pb.MemcacheSetResponse) error { - return errRPC - }) - - if err := Add(c, &Item{}); err != errRPC { - t.Errorf("got %v want errRPC", err) - } -} - -func TestSetRequest(t *testing.T) { - var apiItem = &Item{ - Key: "lyric", - Value: []byte("Where the buffalo roam"), - } - - serviceCalled := false - - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(req *pb.MemcacheSetRequest, _ *pb.MemcacheSetResponse) error { - // Test request. - if n := len(req.Item); n != 1 { - t.Errorf("got %d want 1", n) - return nil - } - pbItem := req.Item[0] - if k := string(pbItem.Key); k != apiItem.Key { - t.Errorf("got %q want %q", k, apiItem.Key) - } - if v := string(pbItem.Value); v != string(apiItem.Value) { - t.Errorf("got %q want %q", v, string(apiItem.Value)) - } - if p := *pbItem.SetPolicy; p != pb.MemcacheSetRequest_SET { - t.Errorf("got %v want %v", p, pb.MemcacheSetRequest_SET) - } - - serviceCalled = true - return nil - }) - - Set(c, apiItem) - if !serviceCalled { - t.Error("Service was not called as expected") - } -} - -func TestSetResponse(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(_ *pb.MemcacheSetRequest, res *pb.MemcacheSetResponse) error { - res.SetStatus = []pb.MemcacheSetResponse_SetStatusCode{pb.MemcacheSetResponse_STORED} - return nil - }) - - if err := Set(c, &Item{}); err != nil { - t.Errorf("got %v want nil", err) - } -} - -func TestSetResponseError(t *testing.T) { - c := aetesting.FakeSingleContext(t, "memcache", "Set", func(_ *pb.MemcacheSetRequest, res *pb.MemcacheSetResponse) error { - res.SetStatus = []pb.MemcacheSetResponse_SetStatusCode{pb.MemcacheSetResponse_ERROR} - return nil - }) - - if err := Set(c, &Item{}); err != ErrServerError { - t.Errorf("got %v want ErrServerError", err) - } -} - -func TestNamespaceResetting(t *testing.T) { - var nsField *string - c := aetesting.FakeSingleContext(t, "memcache", "Get", func(req *pb.MemcacheGetRequest, res *pb.MemcacheGetResponse) error { - nsField = req.NameSpace - return errRPC - }) - - // Check that wrapping c in a namespace twice works correctly. - nc, err := appengine.Namespace(c, "A") - if err != nil { - t.Fatalf("appengine.Namespace: %v", err) - } - c0, err := appengine.Namespace(nc, "") // should act as the original context - if err != nil { - t.Fatalf("appengine.Namespace: %v", err) - } - - Get(c, "key") - if nsField != nil { - t.Fatalf("Get with c yielded %q", *nsField) - } - Get(nc, "key") - if nsField == nil || *nsField != "A" { - t.Fatalf("Get with nc yielded %v", nsField) - } - Get(c0, "key") - if nsField != nil && *nsField != "" { - t.Fatalf("Get with c0 yielded %q", *nsField) - } -} - -func TestGetMultiEmpty(t *testing.T) { - serviceCalled := false - c := aetesting.FakeSingleContext(t, "memcache", "Get", func(req *pb.MemcacheGetRequest, _ *pb.MemcacheGetResponse) error { - serviceCalled = true - return nil - }) - - // Test that the Memcache service is not called when - // GetMulti is passed an empty slice of keys. - GetMulti(c, []string{}) - if serviceCalled { - t.Error("Service was called but should not have been") - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/module/module.go b/Godeps/_workspace/src/google.golang.org/appengine/module/module.go deleted file mode 100644 index ecdc9ec42ee..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/module/module.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2013 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package module provides functions for interacting with modules. - -The appengine package contains functions that report the identity of the app, -including the module name. -*/ -package module - -import ( - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - pb "google.golang.org/appengine/internal/modules" -) - -// List returns the names of modules belonging to this application. -func List(c appengine.Context) ([]string, error) { - req := &pb.GetModulesRequest{} - res := &pb.GetModulesResponse{} - err := c.Call("modules", "GetModules", req, res, nil) - return res.Module, err -} - -// NumInstances returns the number of instances of the given module/version. -// If either argument is the empty string it means the default. -func NumInstances(c appengine.Context, module, version string) (int, error) { - req := &pb.GetNumInstancesRequest{} - if module != "" { - req.Module = &module - } - if version != "" { - req.Version = &version - } - res := &pb.GetNumInstancesResponse{} - - if err := c.Call("modules", "GetNumInstances", req, res, nil); err != nil { - return 0, err - } - return int(*res.Instances), nil -} - -// SetNumInstances sets the number of instances of the given module.version to the -// specified value. If either module or version are the empty string it means the -// default. -func SetNumInstances(c appengine.Context, module, version string, instances int) error { - req := &pb.SetNumInstancesRequest{} - if module != "" { - req.Module = &module - } - if version != "" { - req.Version = &version - } - req.Instances = proto.Int64(int64(instances)) - res := &pb.SetNumInstancesResponse{} - return c.Call("modules", "SetNumInstances", req, res, nil) -} - -// Versions returns the names of the versions that belong to the specified module. -// If module is the empty string, it means the default module. -func Versions(c appengine.Context, module string) ([]string, error) { - req := &pb.GetVersionsRequest{} - if module != "" { - req.Module = &module - } - res := &pb.GetVersionsResponse{} - err := c.Call("modules", "GetVersions", req, res, nil) - return res.GetVersion(), err -} - -// DefaultVersion returns the default version of the specified module. -// If module is the empty string, it means the default module. -func DefaultVersion(c appengine.Context, module string) (string, error) { - req := &pb.GetDefaultVersionRequest{} - if module != "" { - req.Module = &module - } - res := &pb.GetDefaultVersionResponse{} - err := c.Call("modules", "GetDefaultVersion", req, res, nil) - return res.GetVersion(), err -} - -// Start starts the specified version of the specified module. -// If either module or version are the empty string, it means the default. -func Start(c appengine.Context, module, version string) error { - req := &pb.StartModuleRequest{} - if module != "" { - req.Module = &module - } - if version != "" { - req.Version = &version - } - res := &pb.StartModuleResponse{} - return c.Call("modules", "StartModule", req, res, nil) -} - -// Stop stops the specified version of the specified module. -// If either module or version are the empty string, it means the default. -func Stop(c appengine.Context, module, version string) error { - req := &pb.StopModuleRequest{} - if module != "" { - req.Module = &module - } - if version != "" { - req.Version = &version - } - res := &pb.StopModuleResponse{} - return c.Call("modules", "StopModule", req, res, nil) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/module/module_test.go b/Godeps/_workspace/src/google.golang.org/appengine/module/module_test.go deleted file mode 100644 index 73e8971dc62..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/module/module_test.go +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2013 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package module - -import ( - "reflect" - "testing" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal/aetesting" - pb "google.golang.org/appengine/internal/modules" -) - -const version = "test-version" -const module = "test-module" -const instances = 3 - -func TestList(t *testing.T) { - c := aetesting.FakeSingleContext(t, "modules", "GetModules", func(req *pb.GetModulesRequest, res *pb.GetModulesResponse) error { - res.Module = []string{"default", "mod1"} - return nil - }) - got, err := List(c) - if err != nil { - t.Fatalf("List: %v", err) - } - want := []string{"default", "mod1"} - if !reflect.DeepEqual(got, want) { - t.Errorf("List = %v, want %v", got, want) - } -} - -func TestSetNumInstances(t *testing.T) { - c := aetesting.FakeSingleContext(t, "modules", "SetNumInstances", func(req *pb.SetNumInstancesRequest, res *pb.SetNumInstancesResponse) error { - if *req.Module != module { - t.Errorf("Module = %v, want %v", req.Module, module) - } - if *req.Version != version { - t.Errorf("Version = %v, want %v", req.Version, version) - } - if *req.Instances != instances { - t.Errorf("Instances = %v, want %d", req.Instances, instances) - } - return nil - }) - err := SetNumInstances(c, module, version, instances) - if err != nil { - t.Fatalf("SetNumInstances: %v", err) - } -} - -func TestVersions(t *testing.T) { - c := aetesting.FakeSingleContext(t, "modules", "GetVersions", func(req *pb.GetVersionsRequest, res *pb.GetVersionsResponse) error { - if *req.Module != module { - t.Errorf("Module = %v, want %v", req.Module, module) - } - res.Version = []string{"v1", "v2", "v3"} - return nil - }) - got, err := Versions(c, module) - if err != nil { - t.Fatalf("Versions: %v", err) - } - want := []string{"v1", "v2", "v3"} - if !reflect.DeepEqual(got, want) { - t.Errorf("Versions = %v, want %v", got, want) - } -} - -func TestDefaultVersion(t *testing.T) { - c := aetesting.FakeSingleContext(t, "modules", "GetDefaultVersion", func(req *pb.GetDefaultVersionRequest, res *pb.GetDefaultVersionResponse) error { - if *req.Module != module { - t.Errorf("Module = %v, want %v", req.Module, module) - } - res.Version = proto.String(version) - return nil - }) - got, err := DefaultVersion(c, module) - if err != nil { - t.Fatalf("DefaultVersion: %v", err) - } - if got != version { - t.Errorf("Version = %v, want %v", got, version) - } -} - -func TestStart(t *testing.T) { - c := aetesting.FakeSingleContext(t, "modules", "StartModule", func(req *pb.StartModuleRequest, res *pb.StartModuleResponse) error { - if *req.Module != module { - t.Errorf("Module = %v, want %v", req.Module, module) - } - if *req.Version != version { - t.Errorf("Version = %v, want %v", req.Version, version) - } - return nil - }) - - err := Start(c, module, version) - if err != nil { - t.Fatalf("Start: %v", err) - } -} - -func TestStop(t *testing.T) { - c := aetesting.FakeSingleContext(t, "modules", "StopModule", func(req *pb.StopModuleRequest, res *pb.StopModuleResponse) error { - version := "test-version" - module := "test-module" - if *req.Module != module { - t.Errorf("Module = %v, want %v", req.Module, module) - } - if *req.Version != version { - t.Errorf("Version = %v, want %v", req.Version, version) - } - return nil - }) - - err := Stop(c, module, version) - if err != nil { - t.Fatalf("Stop: %v", err) - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/namespace.go b/Godeps/_workspace/src/google.golang.org/appengine/namespace.go deleted file mode 100644 index 73b01e096f5..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/namespace.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package appengine - -import ( - "fmt" - "regexp" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal" - basepb "google.golang.org/appengine/internal/base" -) - -// Namespace returns a replacement context that operates within the given namespace. -func Namespace(c Context, namespace string) (Context, error) { - if !validNamespace.MatchString(namespace) { - return nil, fmt.Errorf("appengine: namespace %q does not match /%s/", namespace, validNamespace) - } - return &namespacedContext{ - Context: c, - namespace: namespace, - }, nil -} - -// validNamespace matches valid namespace names. -var validNamespace = regexp.MustCompile(`^[0-9A-Za-z._-]{0,100}$`) - -// namespacedContext wraps a Context to support namespaces. -type namespacedContext struct { - Context - namespace string -} - -func (n *namespacedContext) Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error { - // Apply any namespace mods. - if mod, ok := internal.NamespaceMods[service]; ok { - mod(in, n.namespace) - } - if service == "__go__" && method == "GetNamespace" { - out.(*basepb.StringProto).Value = proto.String(n.namespace) - return nil - } - - return n.Context.Call(service, method, in, out, opts) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/namespace_test.go b/Godeps/_workspace/src/google.golang.org/appengine/namespace_test.go deleted file mode 100644 index 92fa53479f1..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/namespace_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package appengine - -import ( - "testing" -) - -func TestNamespaceValidity(t *testing.T) { - testCases := []struct { - namespace string - ok bool - }{ - // data from Python's namespace_manager_test.py - {"", true}, - {"__a.namespace.123__", true}, - {"-_A....NAMESPACE-_", true}, - {"-", true}, - {".", true}, - {".-", true}, - - {"?", false}, - {"+", false}, - {"!", false}, - {" ", false}, - } - for _, tc := range testCases { - _, err := Namespace(nil, tc.namespace) - if err == nil && !tc.ok { - t.Errorf("Namespace %q should be rejected, but wasn't", tc.namespace) - } else if err != nil && tc.ok { - t.Errorf("Namespace %q should be accepted, but wasn't", tc.namespace) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/remote_api/client.go b/Godeps/_workspace/src/google.golang.org/appengine/remote_api/client.go deleted file mode 100644 index 3b80041ed41..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/remote_api/client.go +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2013 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package remote_api - -// This file provides the client for connecting remotely to a user's production -// application. - -import ( - "bytes" - "fmt" - "io/ioutil" - "log" - "math/rand" - "net/http" - "net/url" - "regexp" - "strconv" - "strings" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/remote_api" -) - -// NewRemoteContext returns a context that gives access to the production -// APIs for the application at the given host. All communication will be -// performed over SSL unless the host is localhost. -func NewRemoteContext(host string, client *http.Client) (appengine.Context, error) { - // Add an appcfg header to outgoing requests. - t := client.Transport - if t == nil { - t = http.DefaultTransport - } - client.Transport = &headerAddingRoundTripper{t} - - url := url.URL{ - Scheme: "https", - Host: host, - Path: "/_ah/remote_api", - } - if host == "localhost" || strings.HasPrefix(host, "localhost:") { - url.Scheme = "http" - } - u := url.String() - appID, err := getAppID(client, u) - if err != nil { - return nil, fmt.Errorf("unable to contact server: %v", err) - } - return &context{ - client: client, - url: u, - appID: appID, - }, nil -} - -type context struct { - client *http.Client - url string - appID string -} - -func (c *context) Request() interface{} { return nil } -func (c *context) FullyQualifiedAppID() string { return c.appID } - -func (c *context) logf(level, format string, args ...interface{}) { - log.Printf(level+": "+format, args...) -} - -func (c *context) Debugf(format string, args ...interface{}) { c.logf("DEBUG", format, args...) } -func (c *context) Infof(format string, args ...interface{}) { c.logf("INFO", format, args...) } -func (c *context) Warningf(format string, args ...interface{}) { c.logf("WARNING", format, args...) } -func (c *context) Errorf(format string, args ...interface{}) { c.logf("ERROR", format, args...) } -func (c *context) Criticalf(format string, args ...interface{}) { c.logf("CRITICAL", format, args...) } - -func (c *context) Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error { - req, err := proto.Marshal(in) - if err != nil { - return fmt.Errorf("error marshalling request: %v", err) - } - - remReq := &pb.Request{ - ServiceName: proto.String(service), - Method: proto.String(method), - Request: req, - // NOTE(djd): RequestId is unused in the server. - } - - req, err = proto.Marshal(remReq) - if err != nil { - return fmt.Errorf("proto.Marshal: %v", err) - } - - // TODO(djd): Respect opts.Timeout? - resp, err := c.client.Post(c.url, "application/octet-stream", bytes.NewReader(req)) - if err != nil { - return fmt.Errorf("error sending request: %v", err) - } - defer resp.Body.Close() - - body, err := ioutil.ReadAll(resp.Body) - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("bad response %d; body: %q", resp.StatusCode, body) - } - if err != nil { - return fmt.Errorf("failed reading response: %v", err) - } - remResp := &pb.Response{} - if err := proto.Unmarshal(body, remResp); err != nil { - return fmt.Errorf("error unmarshalling response: %v", err) - } - - if ae := remResp.GetApplicationError(); ae != nil { - return &internal.APIError{ - Code: ae.GetCode(), - Detail: ae.GetDetail(), - Service: service, - } - } - - if remResp.Response == nil { - return fmt.Errorf("unexpected response: %s", proto.MarshalTextString(remResp)) - } - - return proto.Unmarshal(remResp.Response, out) -} - -// This is a forgiving regexp designed to parse the app ID from YAML. -var appIDRE = regexp.MustCompile(`app_id["']?\s*:\s*['"]?([-a-z0-9.:~]+)`) - -func getAppID(client *http.Client, url string) (string, error) { - // Generate a pseudo-random token for handshaking. - token := strconv.Itoa(rand.New(rand.NewSource(time.Now().UnixNano())).Int()) - - resp, err := client.Get(fmt.Sprintf("%s?rtok=%s", url, token)) - if err != nil { - return "", err - } - defer resp.Body.Close() - - body, err := ioutil.ReadAll(resp.Body) - if resp.StatusCode != http.StatusOK { - return "", fmt.Errorf("bad response %d; body: %q", resp.StatusCode, body) - } - if err != nil { - return "", fmt.Errorf("failed reading response: %v", err) - } - - // Check the token is present in response. - if !bytes.Contains(body, []byte(token)) { - return "", fmt.Errorf("token not found: want %q; body %q", token, body) - } - - match := appIDRE.FindSubmatch(body) - if match == nil { - return "", fmt.Errorf("app ID not found: body %q", body) - } - - return string(match[1]), nil -} - -type headerAddingRoundTripper struct { - Wrapped http.RoundTripper -} - -func (t *headerAddingRoundTripper) RoundTrip(r *http.Request) (*http.Response, error) { - r.Header.Set("X-Appcfg-Api-Version", "1") - return t.Wrapped.RoundTrip(r) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/remote_api/client_test.go b/Godeps/_workspace/src/google.golang.org/appengine/remote_api/client_test.go deleted file mode 100644 index 4a49cbe81fc..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/remote_api/client_test.go +++ /dev/null @@ -1,20 +0,0 @@ -package remote_api - -import ( - "testing" -) - -func TestAppIDRE(t *testing.T) { - appID := "s~my-appid-539" - tests := []string{ - "{rtok: 8306111115908860449, app_id: s~my-appid-539}\n", - "{rtok: 8306111115908860449, app_id: 's~my-appid-539'}\n", - `{rtok: 8306111115908860449, app_id: "s~my-appid-539"}`, - `{rtok: 8306111115908860449, "app_id":"s~my-appid-539"}`, - } - for _, v := range tests { - if g := appIDRE.FindStringSubmatch(v); g == nil || g[1] != appID { - t.Errorf("appIDRE.FindStringSubmatch(%s) got %q, want %q", v, g, appID) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/remote_api/remote_api.go b/Godeps/_workspace/src/google.golang.org/appengine/remote_api/remote_api.go deleted file mode 100644 index 26d57d7a477..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/remote_api/remote_api.go +++ /dev/null @@ -1,142 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package remote_api implements the /_ah/remote_api endpoint. -This endpoint is used by offline tools such as the bulk loader. -*/ -package remote_api - -import ( - "fmt" - "io" - "io/ioutil" - "net/http" - "strconv" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/remote_api" - "google.golang.org/appengine/user" -) - -func init() { - http.HandleFunc("/_ah/remote_api", handle) -} - -func handle(w http.ResponseWriter, req *http.Request) { - c := appengine.NewContext(req) - - u := user.Current(c) - if u == nil { - u, _ = user.CurrentOAuth(c, "") - } - - if u == nil || !u.Admin { - w.Header().Set("Content-Type", "text/plain; charset=utf-8") - w.WriteHeader(http.StatusUnauthorized) - io.WriteString(w, "You must be logged in as an administrator to access this.\n") - return - } - if req.Header.Get("X-Appcfg-Api-Version") == "" { - w.Header().Set("Content-Type", "text/plain; charset=utf-8") - w.WriteHeader(http.StatusForbidden) - io.WriteString(w, "This request did not contain a necessary header.\n") - return - } - - if req.Method != "POST" { - // Response must be YAML. - rtok := req.FormValue("rtok") - if rtok == "" { - rtok = "0" - } - w.Header().Set("Content-Type", "text/yaml; charset=utf-8") - fmt.Fprintf(w, `{app_id: %q, rtok: %q}`, c.FullyQualifiedAppID(), rtok) - return - } - - defer req.Body.Close() - body, err := ioutil.ReadAll(req.Body) - if err != nil { - w.WriteHeader(http.StatusBadRequest) - c.Errorf("Failed reading body: %v", err) - return - } - remReq := &pb.Request{} - if err := proto.Unmarshal(body, remReq); err != nil { - w.WriteHeader(http.StatusBadRequest) - c.Errorf("Bad body: %v", err) - return - } - - service, method := *remReq.ServiceName, *remReq.Method - if !requestSupported(service, method) { - w.WriteHeader(http.StatusBadRequest) - c.Errorf("Unsupported RPC /%s.%s", service, method) - return - } - - rawReq := &rawMessage{remReq.Request} - rawRes := &rawMessage{} - err = c.Call(service, method, rawReq, rawRes, nil) - - remRes := &pb.Response{} - if err == nil { - remRes.Response = rawRes.buf - } else if ae, ok := err.(*internal.APIError); ok { - remRes.ApplicationError = &pb.ApplicationError{ - Code: &ae.Code, - Detail: &ae.Detail, - } - } else { - // This shouldn't normally happen. - c.Errorf("appengine/remote_api: Unexpected error of type %T: %v", err, err) - remRes.ApplicationError = &pb.ApplicationError{ - Code: proto.Int32(0), - Detail: proto.String(err.Error()), - } - } - out, err := proto.Marshal(remRes) - if err != nil { - // This should not be possible. - w.WriteHeader(500) - c.Errorf("proto.Marshal: %v", err) - return - } - - c.Infof("Spooling %d bytes of response to /%s.%s", len(out), service, method) - w.Header().Set("Content-Type", "application/octet-stream") - w.Header().Set("Content-Length", strconv.Itoa(len(out))) - w.Write(out) -} - -// rawMessage is a protocol buffer type that is already serialised. -// This allows the remote_api code here to handle messages -// without having to know the real type. -type rawMessage struct { - buf []byte -} - -func (rm *rawMessage) Marshal() ([]byte, error) { - return rm.buf, nil -} - -func (rm *rawMessage) Unmarshal(buf []byte) error { - rm.buf = make([]byte, len(buf)) - copy(rm.buf, buf) - return nil -} - -func requestSupported(service, method string) bool { - // Only allow datastore_v3 for now, or AllocateIds for datastore_v4. - return service == "datastore_v3" || (service == "datastore_v4" && method == "AllocateIds") -} - -// Methods to satisfy proto.Message. -func (rm *rawMessage) Reset() { rm.buf = nil } -func (rm *rawMessage) String() string { return strconv.Quote(string(rm.buf)) } -func (*rawMessage) ProtoMessage() {} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/search/field.go b/Godeps/_workspace/src/google.golang.org/appengine/search/field.go deleted file mode 100644 index b4c31c0c9a6..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/search/field.go +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package search - -import ( - "fmt" - "reflect" -) - -// Field is a name/value pair. A search index's document can be loaded and -// saved as a sequence of Fields. -type Field struct { - // Name is the field name. - Name string - // Value is the field value. The valid types are: - // - string, - // - search.Atom, - // - search.HTML, - // - time.Time (stored with millisecond precision), - // - float64, - // - GeoPoint. - Value interface{} - // Language is a two-letter ISO 693-1 code for the field's language, - // defaulting to "en" if nothing is specified. It may only be specified for - // fields of type string and search.HTML. - Language string - // Derived marks fields that were calculated as a result of a - // FieldExpression provided to Search. This field is ignored when saving a - // document. - Derived bool -} - -// DocumentMetadata is a struct containing information describing a given document. -type DocumentMetadata struct { - // Rank is an integer specifying the order the document will be returned in - // search results. If zero, the rank will be set to the number of seconds since - // 2011-01-01 00:00:00 UTC when being Put into an index. - Rank int -} - -// FieldLoadSaver can be converted from and to a slice of Fields -// with additional document metadata. -type FieldLoadSaver interface { - Load([]Field, *DocumentMetadata) error - Save() ([]Field, *DocumentMetadata, error) -} - -// FieldList converts a []Field to implement FieldLoadSaver. -type FieldList []Field - -// Load loads all of the provided fields into l. -// It does not first reset *l to an empty slice. -func (l *FieldList) Load(f []Field, _ *DocumentMetadata) error { - *l = append(*l, f...) - return nil -} - -// Save returns all of l's fields as a slice of Fields. -func (l *FieldList) Save() ([]Field, *DocumentMetadata, error) { - return *l, nil, nil -} - -var _ FieldLoadSaver = (*FieldList)(nil) - -// structFLS adapts a struct to be a FieldLoadSaver. -type structFLS struct { - reflect.Value -} - -func (s structFLS) Load(fields []Field, _ *DocumentMetadata) (err error) { - for _, field := range fields { - f := s.FieldByName(field.Name) - if !f.IsValid() { - err = &ErrFieldMismatch{ - FieldName: field.Name, - Reason: "no such struct field", - } - continue - } - if !f.CanSet() { - err = &ErrFieldMismatch{ - FieldName: field.Name, - Reason: "cannot set struct field", - } - continue - } - v := reflect.ValueOf(field.Value) - if ft, vt := f.Type(), v.Type(); ft != vt { - err = &ErrFieldMismatch{ - FieldName: field.Name, - Reason: fmt.Sprintf("type mismatch: %v for %v data", ft, vt), - } - continue - } - f.Set(v) - } - return err -} - -func (s structFLS) Save() ([]Field, *DocumentMetadata, error) { - fields := make([]Field, 0, s.NumField()) - for i := 0; i < s.NumField(); i++ { - f := s.Field(i) - if !f.CanSet() { - continue - } - fields = append(fields, Field{ - Name: s.Type().Field(i).Name, - Value: f.Interface(), - }) - } - return fields, nil, nil -} - -// newStructFLS returns a FieldLoadSaver for the struct pointer p. -func newStructFLS(p interface{}) (FieldLoadSaver, error) { - v := reflect.ValueOf(p) - if v.Kind() != reflect.Ptr || v.IsNil() || v.Elem().Kind() != reflect.Struct { - return nil, ErrInvalidDocumentType - } - return structFLS{v.Elem()}, nil -} - -// LoadStruct loads the fields from f to dst. dst must be a struct pointer. -func LoadStruct(dst interface{}, f []Field) error { - x, err := newStructFLS(dst) - if err != nil { - return err - } - return x.Load(f, nil) -} - -// SaveStruct returns the fields from src as a slice of Field. -// src must be a struct pointer. -func SaveStruct(src interface{}) ([]Field, error) { - x, err := newStructFLS(src) - if err != nil { - return nil, err - } - fs, _, err := x.Save() - return fs, err -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/search/search.go b/Godeps/_workspace/src/google.golang.org/appengine/search/search.go deleted file mode 100644 index 2a53a967d37..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/search/search.go +++ /dev/null @@ -1,853 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package search provides a client for App Engine's search service. - -Indexes contains documents, and a document's contents are a mapping from case- -sensitive field names to values. In Go, documents are represented by struct -pointers, and the valid types for a struct's fields are: - - string, - - search.Atom, - - search.HTML, - - time.Time (stored with millisecond precision), - - float64 (value between -2,147,483,647 and 2,147,483,647 inclusive), - - appengine.GeoPoint. - -Documents can also be represented by any type implementing the FieldLoadSaver -interface. - -Example code: - - type Doc struct { - Author string - Comment string - Creation time.Time - } - - index, err := search.Open("comments") - if err != nil { - return err - } - newID, err := index.Put(c, "", &Doc{ - Author: "gopher", - Comment: "the truth of the matter", - Creation: time.Now(), - }) - if err != nil { - return err - } - -Searching an index for a query will result in an iterator. As with an iterator -from package datastore, pass a destination struct to Next to decode the next -result. Next will return Done when the iterator is exhausted. - - for t := index.Search(c, "Comment:truth", nil); ; { - var doc Doc - id, err := t.Next(&doc) - if err == search.Done { - break - } - if err != nil { - return err - } - fmt.Fprintf(w, "%s -> %#v\n", id, doc) - } - -Call List to iterate over documents. - - for t := index.List(c, nil); ; { - var doc Doc - id, err := t.Next(&doc) - if err == search.Done { - break - } - if err != nil { - return err - } - fmt.Fprintf(w, "%s -> %#v\n", id, doc) - } - -A single document can also be retrieved by its ID. Pass a destination struct -to Get to hold the resulting document. - - var doc Doc - err := index.Get(c, id, &doc) - if err != nil { - return err - } - -Queries are expressed as strings, plus some optional parameters. The query -language is described at -https://cloud.google.com/appengine/docs/go/search/query_strings - -Note that in Go, field names come from the struct field definition and begin -with an upper case letter. -*/ -package search - -// TODO: let Put specify the document language: "en", "fr", etc. Also: order_id?? storage?? -// TODO: Index.GetAll (or Iterator.GetAll)? -// TODO: struct <-> protobuf tests. -// TODO: enforce Python's MIN_NUMBER_VALUE and MIN_DATE (which would disallow a zero -// time.Time)? _MAXIMUM_STRING_LENGTH? - -import ( - "errors" - "fmt" - "reflect" - "regexp" - "strconv" - "strings" - "time" - "unicode/utf8" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/search" -) - -var ( - // ErrInvalidDocumentType is returned when methods like Put, Get or Next - // are passed a dst or src argument of invalid type. - ErrInvalidDocumentType = errors.New("search: invalid document type") - - // ErrNoSuchDocument is returned when no document was found for a given ID. - ErrNoSuchDocument = errors.New("search: no such document") -) - -// ErrFieldMismatch is returned when a field is to be loaded into a different -// than the one it was stored from, or when a field is missing or unexported in -// the destination struct. -type ErrFieldMismatch struct { - FieldName string - Reason string -} - -func (e *ErrFieldMismatch) Error() string { - return fmt.Sprintf("search: cannot load field %q: %s", e.FieldName, e.Reason) -} - -// Atom is a document field whose contents are indexed as a single indivisible -// string. -type Atom string - -// HTML is a document field whose contents are indexed as HTML. Only text nodes -// are indexed: "foobar" will be treated as "foobar". -type HTML string - -// validIndexNameOrDocID is the Go equivalent of Python's -// _ValidateVisiblePrintableAsciiNotReserved. -func validIndexNameOrDocID(s string) bool { - if strings.HasPrefix(s, "!") { - return false - } - for _, c := range s { - if c < 0x21 || 0x7f <= c { - return false - } - } - return true -} - -var ( - fieldNameRE = regexp.MustCompile(`^[A-Z][A-Za-z0-9_]*$`) - languageRE = regexp.MustCompile(`^[a-z]{2}$`) -) - -// validFieldName is the Go equivalent of Python's _CheckFieldName. -func validFieldName(s string) bool { - return len(s) <= 500 && fieldNameRE.MatchString(s) -} - -// validDocRank checks that the ranks is in the range [0, 2^31). -func validDocRank(r int) bool { - return 0 <= r && r <= (1<<31-1) -} - -// validLanguage checks that a language looks like ISO 639-1. -func validLanguage(s string) bool { - return languageRE.MatchString(s) -} - -// validFloat checks that f is in the range [-2147483647, 2147483647]. -func validFloat(f float64) bool { - return -(1<<31-1) <= f && f <= (1<<31-1) -} - -// Index is an index of documents. -type Index struct { - spec pb.IndexSpec -} - -// orderIDEpoch forms the basis for populating OrderId on documents. -var orderIDEpoch = time.Date(2011, 1, 1, 0, 0, 0, 0, time.UTC) - -// Open opens the index with the given name. The index is created if it does -// not already exist. -// -// The name is a human-readable ASCII string. It must contain no whitespace -// characters and not start with "!". -func Open(name string) (*Index, error) { - if !validIndexNameOrDocID(name) { - return nil, fmt.Errorf("search: invalid index name %q", name) - } - return &Index{ - spec: pb.IndexSpec{ - Name: &name, - }, - }, nil -} - -// Put saves src to the index. If id is empty, a new ID is allocated by the -// service and returned. If id is not empty, any existing index entry for that -// ID is replaced. -// -// The ID is a human-readable ASCII string. It must contain no whitespace -// characters and not start with "!". -// -// src must be a non-nil struct pointer or implement the FieldLoadSaver -// interface. -func (x *Index) Put(c appengine.Context, id string, src interface{}) (string, error) { - fields, meta, err := saveDoc(src) - if err != nil { - return "", err - } - d := &pb.Document{ - Field: fields, - OrderId: proto.Int32(int32(time.Since(orderIDEpoch).Seconds())), - } - if meta != nil { - if meta.Rank != 0 { - if !validDocRank(meta.Rank) { - return "", fmt.Errorf("search: invalid rank %d, must be [0, 2^31)", meta.Rank) - } - *d.OrderId = int32(meta.Rank) - } - } - if id != "" { - if !validIndexNameOrDocID(id) { - return "", fmt.Errorf("search: invalid ID %q", id) - } - d.Id = proto.String(id) - } - req := &pb.IndexDocumentRequest{ - Params: &pb.IndexDocumentParams{ - Document: []*pb.Document{d}, - IndexSpec: &x.spec, - }, - } - res := &pb.IndexDocumentResponse{} - if err := c.Call("search", "IndexDocument", req, res, nil); err != nil { - return "", err - } - if len(res.Status) > 0 { - if s := res.Status[0]; s.GetCode() != pb.SearchServiceError_OK { - return "", fmt.Errorf("search: %s: %s", s.GetCode(), s.GetErrorDetail()) - } - } - if len(res.Status) != 1 || len(res.DocId) != 1 { - return "", fmt.Errorf("search: internal error: wrong number of results (%d Statuses, %d DocIDs)", - len(res.Status), len(res.DocId)) - } - return res.DocId[0], nil -} - -// Get loads the document with the given ID into dst. -// -// The ID is a human-readable ASCII string. It must be non-empty, contain no -// whitespace characters and not start with "!". -// -// dst must be a non-nil struct pointer or implement the FieldLoadSaver -// interface. -// -// ErrFieldMismatch is returned when a field is to be loaded into a different -// type than the one it was stored from, or when a field is missing or -// unexported in the destination struct. ErrFieldMismatch is only returned if -// dst is a struct pointer. It is up to the callee to decide whether this error -// is fatal, recoverable, or ignorable. -func (x *Index) Get(c appengine.Context, id string, dst interface{}) error { - if id == "" || !validIndexNameOrDocID(id) { - return fmt.Errorf("search: invalid ID %q", id) - } - req := &pb.ListDocumentsRequest{ - Params: &pb.ListDocumentsParams{ - IndexSpec: &x.spec, - StartDocId: proto.String(id), - Limit: proto.Int32(1), - }, - } - res := &pb.ListDocumentsResponse{} - if err := c.Call("search", "ListDocuments", req, res, nil); err != nil { - return err - } - if res.Status == nil || res.Status.GetCode() != pb.SearchServiceError_OK { - return fmt.Errorf("search: %s: %s", res.Status.GetCode(), res.Status.GetErrorDetail()) - } - if len(res.Document) != 1 || res.Document[0].GetId() != id { - return ErrNoSuchDocument - } - metadata := &DocumentMetadata{ - Rank: int(res.Document[0].GetOrderId()), - } - return loadDoc(dst, res.Document[0].Field, nil, metadata) -} - -// Delete deletes a document from the index. -func (x *Index) Delete(c appengine.Context, id string) error { - req := &pb.DeleteDocumentRequest{ - Params: &pb.DeleteDocumentParams{ - DocId: []string{id}, - IndexSpec: &x.spec, - }, - } - res := &pb.DeleteDocumentResponse{} - if err := c.Call("search", "DeleteDocument", req, res, nil); err != nil { - return err - } - if len(res.Status) != 1 { - return fmt.Errorf("search: internal error: wrong number of results (%d)", len(res.Status)) - } - if s := res.Status[0]; s.GetCode() != pb.SearchServiceError_OK { - return fmt.Errorf("search: %s: %s", s.GetCode(), s.GetErrorDetail()) - } - return nil -} - -// List lists all of the documents in an index. The documents are returned in -// increasing ID order. -func (x *Index) List(c appengine.Context, opts *ListOptions) *Iterator { - t := &Iterator{ - c: c, - index: x, - count: -1, - listInclusive: true, - more: moreList, - limit: -1, - } - if opts != nil { - t.listStartID = opts.StartID - if opts.Limit > 0 { - t.limit = opts.Limit - } - t.idsOnly = opts.IDsOnly - } - return t -} - -func moreList(t *Iterator) error { - req := &pb.ListDocumentsRequest{ - Params: &pb.ListDocumentsParams{ - IndexSpec: &t.index.spec, - }, - } - if t.listStartID != "" { - req.Params.StartDocId = &t.listStartID - req.Params.IncludeStartDoc = &t.listInclusive - } - if t.limit > 0 { - req.Params.Limit = proto.Int32(int32(t.limit)) - } - if t.idsOnly { - req.Params.KeysOnly = &t.idsOnly - } - - res := &pb.ListDocumentsResponse{} - if err := t.c.Call("search", "ListDocuments", req, res, nil); err != nil { - return err - } - if res.Status == nil || res.Status.GetCode() != pb.SearchServiceError_OK { - return fmt.Errorf("search: %s: %s", res.Status.GetCode(), res.Status.GetErrorDetail()) - } - t.listRes = res.Document - t.listStartID, t.listInclusive, t.more = "", false, nil - if len(res.Document) != 0 { - if id := res.Document[len(res.Document)-1].GetId(); id != "" { - t.listStartID, t.more = id, moreList - } - } - return nil -} - -// ListOptions are the options for listing documents in an index. Passing a nil -// *ListOptions is equivalent to using the default values. -type ListOptions struct { - // StartID is the inclusive lower bound for the ID of the returned - // documents. The zero value means all documents will be returned. - StartID string - - // Limit is the maximum number of documents to return. The zero value - // indicates no limit. - Limit int - - // IDsOnly indicates that only document IDs should be returned for the list - // operation; no document fields are populated. - IDsOnly bool -} - -// Search searches the index for the given query. -func (x *Index) Search(c appengine.Context, query string, opts *SearchOptions) *Iterator { - t := &Iterator{ - c: c, - index: x, - searchQuery: query, - more: moreSearch, - limit: -1, - } - if opts != nil { - if opts.Limit > 0 { - t.limit = opts.Limit - } - t.fields = opts.Fields - t.idsOnly = opts.IDsOnly - t.sort = opts.Sort - t.exprs = opts.Expressions - } - return t -} - -func moreSearch(t *Iterator) error { - req := &pb.SearchRequest{ - Params: &pb.SearchParams{ - IndexSpec: &t.index.spec, - Query: &t.searchQuery, - CursorType: pb.SearchParams_SINGLE.Enum(), - FieldSpec: &pb.FieldSpec{ - Name: t.fields, - }, - }, - } - if t.limit > 0 { - req.Params.Limit = proto.Int32(int32(t.limit)) - } - if t.idsOnly { - req.Params.KeysOnly = &t.idsOnly - } - if t.sort != nil { - if err := sortToProto(t.sort, req.Params); err != nil { - return err - } - } - for _, e := range t.exprs { - req.Params.FieldSpec.Expression = append(req.Params.FieldSpec.Expression, &pb.FieldSpec_Expression{ - Name: proto.String(e.Name), - Expression: proto.String(e.Expr), - }) - } - - if t.searchCursor != nil { - req.Params.Cursor = t.searchCursor - } - res := &pb.SearchResponse{} - if err := t.c.Call("search", "Search", req, res, nil); err != nil { - return err - } - if res.Status == nil || res.Status.GetCode() != pb.SearchServiceError_OK { - return fmt.Errorf("search: %s: %s", res.Status.GetCode(), res.Status.GetErrorDetail()) - } - t.searchRes = res.Result - t.count = int(*res.MatchedCount) - if res.Cursor != nil { - t.searchCursor, t.more = res.Cursor, moreSearch - } else { - t.searchCursor, t.more = nil, nil - } - return nil -} - -// SearchOptions are the options for searching an index. Passing a nil -// *SearchOptions is equivalent to using the default values. -type SearchOptions struct { - // Limit is the maximum number of documents to return. The zero value - // indicates no limit. - Limit int - - // IDsOnly indicates that only document IDs should be returned for the search - // operation; no document fields are populated. - IDsOnly bool - - // Sort controls the ordering of search results. - Sort *SortOptions - - // Fields specifies which document fields to include in the results. If omitted, - // all document fields are returned. No more than 100 fields may be specified. - Fields []string - - // Expressions specifies additional computed fields to add to each returned - // document. - Expressions []FieldExpression - - // TODO: cursor, offset, maybe others. -} - -// FieldExpression defines a custom expression to evaluate for each result. -type FieldExpression struct { - // Name is the name to use for the computed field. - Name string - - // Expr is evaluated to provide a custom content snippet for each document. - // See https://cloud.google.com/appengine/docs/go/search/options for - // the supported expression syntax. - Expr string -} - -// SortOptions control the ordering and scoring of search results. -type SortOptions struct { - // Expressions is a slice of expressions representing a multi-dimensional - // sort. - Expressions []SortExpression - - // Scorer, when specified, will cause the documents to be scored according to - // search term frequency. - Scorer Scorer - - // Limit is the maximum number of objects to score and/or sort. Limit cannot - // be more than 10,000. The zero value indicates a default limit. - Limit int -} - -// SortExpression defines a single dimension for sorting a document. -type SortExpression struct { - // Expr is evaluated to provide a sorting value for each document. - // See https://cloud.google.com/appengine/docs/go/search/options for - // the supported expression syntax. - Expr string - - // Reverse causes the documents to be sorted in ascending order. - Reverse bool - - // The default value to use when no field is present or the expresion - // cannot be calculated for a document. For text sorts, Default must - // be of type string; for numeric sorts, float64. - Default interface{} -} - -// A Scorer defines how a document is scored. -type Scorer interface { - toProto(*pb.ScorerSpec) -} - -type enumScorer struct { - enum pb.ScorerSpec_Scorer -} - -func (e enumScorer) toProto(spec *pb.ScorerSpec) { - spec.Scorer = e.enum.Enum() -} - -var ( - // MatchScorer assigns a score based on term frequency in a document. - MatchScorer Scorer = enumScorer{pb.ScorerSpec_MATCH_SCORER} - - // RescoringMatchScorer assigns a score based on the quality of the query - // match. It is similar to a MatchScorer but uses a more complex scoring - // algorithm based on match term frequency and other factors like field type. - // Please be aware that this algorithm is continually refined and can change - // over time without notice. This means that the ordering of search results - // that use this scorer can also change without notice. - RescoringMatchScorer Scorer = enumScorer{pb.ScorerSpec_RESCORING_MATCH_SCORER} -) - -func sortToProto(sort *SortOptions, params *pb.SearchParams) error { - for _, e := range sort.Expressions { - spec := &pb.SortSpec{ - SortExpression: proto.String(e.Expr), - } - if e.Reverse { - spec.SortDescending = proto.Bool(false) - } - if e.Default != nil { - switch d := e.Default.(type) { - case float64: - spec.DefaultValueNumeric = &d - case string: - spec.DefaultValueText = &d - default: - return fmt.Errorf("search: invalid Default type %T for expression %q", d, e.Expr) - } - } - params.SortSpec = append(params.SortSpec, spec) - } - - spec := &pb.ScorerSpec{} - if sort.Limit > 0 { - spec.Limit = proto.Int32(int32(sort.Limit)) - params.ScorerSpec = spec - } - if sort.Scorer != nil { - sort.Scorer.toProto(spec) - params.ScorerSpec = spec - } - - return nil -} - -// Iterator is the result of searching an index for a query or listing an -// index. -type Iterator struct { - c appengine.Context - index *Index - err error - - listRes []*pb.Document - listStartID string - listInclusive bool - - searchRes []*pb.SearchResult - searchQuery string - searchCursor *string - sort *SortOptions - - fields []string - exprs []FieldExpression - - more func(*Iterator) error - - count int - limit int // items left to return; -1 for unlimited. - idsOnly bool -} - -// Done is returned when a query iteration has completed. -var Done = errors.New("search: query has no more results") - -// Count returns an approximation of the number of documents matched by the -// query. It is only valid to call for iterators returned by Search. -func (t *Iterator) Count() int { return t.count } - -// Next returns the ID of the next result. When there are no more results, -// Done is returned as the error. -// -// dst must be a non-nil struct pointer, implement the FieldLoadSaver -// interface, or be a nil interface value. If a non-nil dst is provided, it -// will be filled with the indexed fields. dst is ignored if this iterator was -// created with an IDsOnly option. -func (t *Iterator) Next(dst interface{}) (string, error) { - if t.err == nil && len(t.listRes)+len(t.searchRes) == 0 && t.more != nil { - t.err = t.more(t) - } - if t.err != nil { - return "", t.err - } - - var doc *pb.Document - var exprs []*pb.Field - switch { - case len(t.listRes) != 0: - doc = t.listRes[0] - t.listRes = t.listRes[1:] - case len(t.searchRes) != 0: - doc = t.searchRes[0].Document - exprs = t.searchRes[0].Expression - t.searchRes = t.searchRes[1:] - default: - return "", Done - } - if doc == nil { - return "", errors.New("search: internal error: no document returned") - } - if !t.idsOnly && dst != nil { - metadata := &DocumentMetadata{ - Rank: int(doc.GetOrderId()), - } - if err := loadDoc(dst, doc.Field, exprs, metadata); err != nil { - return "", err - } - } - if t.limit > 0 { - t.limit-- - if t.limit == 0 { - t.more = nil // prevent further fetches - } - } - return doc.GetId(), nil -} - -// saveDoc converts from a struct pointer or FieldLoadSaver to protobufs. -func saveDoc(src interface{}) ([]*pb.Field, *DocumentMetadata, error) { - var err error - var fields []Field - var meta *DocumentMetadata - switch x := src.(type) { - case FieldLoadSaver: - fields, meta, err = x.Save() - default: - fields, err = SaveStruct(src) - } - if err != nil { - return nil, nil, err - } - f, err := fieldsToProto(fields) - return f, meta, err -} - -func fieldsToProto(src []Field) ([]*pb.Field, error) { - // Maps to catch duplicate time or numeric fields. - timeFields, numericFields := make(map[string]bool), make(map[string]bool) - dst := make([]*pb.Field, 0, len(src)) - for _, f := range src { - if !validFieldName(f.Name) { - return nil, fmt.Errorf("search: invalid field name %q", f.Name) - } - fieldValue := &pb.FieldValue{} - switch x := f.Value.(type) { - case string: - fieldValue.Type = pb.FieldValue_TEXT.Enum() - fieldValue.StringValue = proto.String(x) - case Atom: - fieldValue.Type = pb.FieldValue_ATOM.Enum() - fieldValue.StringValue = proto.String(string(x)) - case HTML: - fieldValue.Type = pb.FieldValue_HTML.Enum() - fieldValue.StringValue = proto.String(string(x)) - case time.Time: - if timeFields[f.Name] { - return nil, fmt.Errorf("search: duplicate time field %q", f.Name) - } - timeFields[f.Name] = true - fieldValue.Type = pb.FieldValue_DATE.Enum() - fieldValue.StringValue = proto.String(strconv.FormatInt(x.UnixNano()/1e6, 10)) - case float64: - if numericFields[f.Name] { - return nil, fmt.Errorf("search: duplicate numeric field %q", f.Name) - } - if !validFloat(x) { - return nil, fmt.Errorf("search: numeric field %q with invalid value %f", f.Name, x) - } - numericFields[f.Name] = true - fieldValue.Type = pb.FieldValue_NUMBER.Enum() - fieldValue.StringValue = proto.String(strconv.FormatFloat(x, 'e', -1, 64)) - case appengine.GeoPoint: - if !x.Valid() { - return nil, fmt.Errorf( - "search: GeoPoint field %q with invalid value %v", - f.Name, x) - } - fieldValue.Type = pb.FieldValue_GEO.Enum() - fieldValue.Geo = &pb.FieldValue_Geo{ - Lat: proto.Float64(x.Lat), - Lng: proto.Float64(x.Lng), - } - default: - return nil, fmt.Errorf("search: unsupported field type: %v", reflect.TypeOf(f.Value)) - } - if f.Language != "" { - switch f.Value.(type) { - case string, HTML: - if !validLanguage(f.Language) { - return nil, fmt.Errorf("search: invalid language for field %q: %q", f.Name, f.Language) - } - fieldValue.Language = proto.String(f.Language) - default: - return nil, fmt.Errorf("search: setting language not supported for field %q of type %T", f.Name, f.Value) - } - } - if p := fieldValue.StringValue; p != nil && !utf8.ValidString(*p) { - return nil, fmt.Errorf("search: %q field is invalid UTF-8: %q", f.Name, *p) - } - dst = append(dst, &pb.Field{ - Name: proto.String(f.Name), - Value: fieldValue, - }) - } - return dst, nil -} - -// loadDoc converts from protobufs and document metadata to a struct pointer or -// FieldLoadSaver/FieldMetadataLoadSaver. Two slices of fields may be provided: -// src represents the document's stored fields; exprs is the derived expressions -// requested by the developer. The latter may be empty. -func loadDoc(dst interface{}, src, exprs []*pb.Field, meta *DocumentMetadata) (err error) { - fields, err := protoToFields(src) - if err != nil { - return err - } - if len(exprs) > 0 { - exprFields, err := protoToFields(exprs) - if err != nil { - return err - } - // Mark each field as derived. - for i := range exprFields { - exprFields[i].Derived = true - } - fields = append(fields, exprFields...) - } - switch x := dst.(type) { - case FieldLoadSaver: - return x.Load(fields, meta) - default: - return LoadStruct(dst, fields) - } -} - -func protoToFields(fields []*pb.Field) ([]Field, error) { - dst := make([]Field, 0, len(fields)) - for _, field := range fields { - fieldValue := field.GetValue() - f := Field{ - Name: field.GetName(), - } - switch fieldValue.GetType() { - case pb.FieldValue_TEXT: - f.Value = fieldValue.GetStringValue() - f.Language = fieldValue.GetLanguage() - case pb.FieldValue_ATOM: - f.Value = Atom(fieldValue.GetStringValue()) - case pb.FieldValue_HTML: - f.Value = HTML(fieldValue.GetStringValue()) - f.Language = fieldValue.GetLanguage() - case pb.FieldValue_DATE: - sv := fieldValue.GetStringValue() - millis, err := strconv.ParseInt(sv, 10, 64) - if err != nil { - return nil, fmt.Errorf("search: internal error: bad time.Time encoding %q: %v", sv, err) - } - f.Value = time.Unix(0, millis*1e6) - case pb.FieldValue_NUMBER: - sv := fieldValue.GetStringValue() - x, err := strconv.ParseFloat(sv, 64) - if err != nil { - return nil, err - } - f.Value = x - case pb.FieldValue_GEO: - geoValue := fieldValue.GetGeo() - geoPoint := appengine.GeoPoint{geoValue.GetLat(), geoValue.GetLng()} - if !geoPoint.Valid() { - return nil, fmt.Errorf("search: internal error: invalid GeoPoint encoding: %v", geoPoint) - } - f.Value = geoPoint - default: - return nil, fmt.Errorf("search: internal error: unknown data type %s", fieldValue.GetType()) - } - dst = append(dst, f) - } - return dst, nil -} - -func namespaceMod(m proto.Message, namespace string) { - set := func(s **string) { - if *s == nil { - *s = &namespace - } - } - switch m := m.(type) { - case *pb.IndexDocumentRequest: - set(&m.Params.IndexSpec.Namespace) - case *pb.ListDocumentsRequest: - set(&m.Params.IndexSpec.Namespace) - case *pb.DeleteDocumentRequest: - set(&m.Params.IndexSpec.Namespace) - case *pb.SearchRequest: - set(&m.Params.IndexSpec.Namespace) - } -} - -func init() { - internal.RegisterErrorCodeMap("search", pb.SearchServiceError_ErrorCode_name) - internal.NamespaceMods["search"] = namespaceMod -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/search/search_test.go b/Godeps/_workspace/src/google.golang.org/appengine/search/search_test.go deleted file mode 100644 index 6178c517bcf..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/search/search_test.go +++ /dev/null @@ -1,650 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package search - -import ( - "errors" - "fmt" - "reflect" - "strings" - "testing" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal/aetesting" - pb "google.golang.org/appengine/internal/search" -) - -type TestDoc struct { - String string - Atom Atom - HTML HTML - Float float64 - Location appengine.GeoPoint - Time time.Time -} - -type FieldListWithMeta struct { - Fields FieldList - Meta *DocumentMetadata -} - -func (f *FieldListWithMeta) Load(fields []Field, meta *DocumentMetadata) error { - f.Meta = meta - return f.Fields.Load(fields, nil) -} - -func (f *FieldListWithMeta) Save() ([]Field, *DocumentMetadata, error) { - fields, _, err := f.Fields.Save() - return fields, f.Meta, err -} - -// Assert that FieldListWithMeta satisfies FieldLoadSaver -var _ FieldLoadSaver = &FieldListWithMeta{} - -var ( - float = 3.14159 - floatOut = "3.14159e+00" - latitude = 37.3894 - longitude = 122.0819 - testGeo = appengine.GeoPoint{latitude, longitude} - testString = "foobar" - testTime = time.Unix(1337324400, 0) - testTimeOut = "1337324400000" - searchMeta = &DocumentMetadata{ - Rank: 42, - } - searchDoc = TestDoc{ - String: testString, - Atom: Atom(testString), - HTML: HTML(testString), - Float: float, - Location: testGeo, - Time: testTime, - } - searchFields = FieldList{ - Field{Name: "String", Value: testString}, - Field{Name: "Atom", Value: Atom(testString)}, - Field{Name: "HTML", Value: HTML(testString)}, - Field{Name: "Float", Value: float}, - Field{Name: "Location", Value: testGeo}, - Field{Name: "Time", Value: testTime}, - } - // searchFieldsWithLang is a copy of the searchFields with the Language field - // set on text/HTML Fields. - searchFieldsWithLang = FieldList{} - protoFields = []*pb.Field{ - newStringValueField("String", testString, pb.FieldValue_TEXT), - newStringValueField("Atom", testString, pb.FieldValue_ATOM), - newStringValueField("HTML", testString, pb.FieldValue_HTML), - newStringValueField("Float", floatOut, pb.FieldValue_NUMBER), - { - Name: proto.String("Location"), - Value: &pb.FieldValue{ - Geo: &pb.FieldValue_Geo{ - Lat: proto.Float64(latitude), - Lng: proto.Float64(longitude), - }, - Type: pb.FieldValue_GEO.Enum(), - }, - }, - newStringValueField("Time", testTimeOut, pb.FieldValue_DATE), - } -) - -func init() { - for _, f := range searchFields { - if f.Name == "String" || f.Name == "HTML" { - f.Language = "en" - } - searchFieldsWithLang = append(searchFieldsWithLang, f) - } -} - -func newStringValueField(name, value string, valueType pb.FieldValue_ContentType) *pb.Field { - return &pb.Field{ - Name: proto.String(name), - Value: &pb.FieldValue{ - StringValue: proto.String(value), - Type: valueType.Enum(), - }, - } -} - -func TestValidIndexNameOrDocID(t *testing.T) { - testCases := []struct { - s string - want bool - }{ - {"", true}, - {"!", false}, - {"$", true}, - {"!bad", false}, - {"good!", true}, - {"alsoGood", true}, - {"has spaces", false}, - {"is_inva\xffid_UTF-8", false}, - {"is_non-ASCïI", false}, - {"underscores_are_ok", true}, - } - for _, tc := range testCases { - if got := validIndexNameOrDocID(tc.s); got != tc.want { - t.Errorf("%q: got %v, want %v", tc.s, got, tc.want) - } - } -} - -func TestLoadDoc(t *testing.T) { - got, want := TestDoc{}, searchDoc - if err := loadDoc(&got, protoFields, nil, nil); err != nil { - t.Fatalf("loadDoc: %v", err) - } - if got != want { - t.Errorf("loadDoc: got %v, wanted %v", got, want) - } -} - -func TestSaveDoc(t *testing.T) { - got, _, err := saveDoc(&searchDoc) - if err != nil { - t.Fatalf("saveDoc: %v", err) - } - want := protoFields - if !reflect.DeepEqual(got, want) { - t.Errorf("\ngot %v\nwant %v", got, want) - } -} - -func TestLoadFieldList(t *testing.T) { - var got FieldList - want := searchFieldsWithLang - if err := loadDoc(&got, protoFields, nil, nil); err != nil { - t.Fatalf("loadDoc: %v", err) - } - if !reflect.DeepEqual(got, want) { - t.Errorf("\ngot %v\nwant %v", got, want) - } -} - -func TestLangFields(t *testing.T) { - fl := &FieldList{ - {Name: "Foo", Value: "I am English", Language: "en"}, - {Name: "Bar", Value: "私は日本人だ", Language: "jp"}, - } - var got FieldList - protoFields, _, err := saveDoc(fl) - if err != nil { - t.Fatalf("saveDoc: %v", err) - } - if err := loadDoc(&got, protoFields, nil, nil); err != nil { - t.Fatalf("loadDoc: %v", err) - } - if want := fl; !reflect.DeepEqual(&got, want) { - t.Errorf("got %v\nwant %v", got, want) - } -} - -func TestSaveFieldList(t *testing.T) { - got, _, err := saveDoc(&searchFields) - if err != nil { - t.Fatalf("saveDoc: %v", err) - } - want := protoFields - if !reflect.DeepEqual(got, want) { - t.Errorf("\ngot %v\nwant %v", got, want) - } -} - -func TestLoadFieldAndExprList(t *testing.T) { - var got, want FieldList - for i, f := range searchFieldsWithLang { - f.Derived = (i >= 2) // First 2 elements are "fields", next are "expressions". - want = append(want, f) - } - if err := loadDoc(&got, protoFields[:2], protoFields[2:], nil); err != nil { - t.Fatalf("loadDoc: %v", err) - } - if !reflect.DeepEqual(got, want) { - t.Errorf("got %v\nwant %v", got, want) - } -} - -func TestLoadMeta(t *testing.T) { - var got FieldListWithMeta - want := FieldListWithMeta{ - Meta: searchMeta, - Fields: searchFieldsWithLang, - } - if err := loadDoc(&got, protoFields, nil, searchMeta); err != nil { - t.Fatalf("loadDoc: %v", err) - } - if !reflect.DeepEqual(got, want) { - t.Errorf("got %v\nwant %v", got, want) - } -} - -func TestSaveMeta(t *testing.T) { - got, gotMeta, err := saveDoc(&FieldListWithMeta{ - Meta: searchMeta, - Fields: searchFields, - }) - if err != nil { - t.Fatalf("saveDoc: %v", err) - } - if want := protoFields; !reflect.DeepEqual(got, want) { - t.Errorf("\ngot %v\nwant %v", got, want) - } - if want := searchMeta; !reflect.DeepEqual(gotMeta, want) { - t.Errorf("\ngot %v\nwant %v", gotMeta, want) - } -} - -func TestValidFieldNames(t *testing.T) { - testCases := []struct { - name string - valid bool - }{ - {"Normal", true}, - {"Also_OK_123", true}, - {"Not so great", false}, - {"lower_case", false}, - {"Exclaim!", false}, - {"Hello세상아 안녕", false}, - {"", false}, - {"Hεllo", false}, - {strings.Repeat("A", 500), true}, - {strings.Repeat("A", 501), false}, - } - - for _, tc := range testCases { - _, _, err := saveDoc(&FieldList{ - Field{Name: tc.name, Value: "val"}, - }) - if err != nil && !strings.Contains(err.Error(), "invalid field name") { - t.Errorf("unexpected err %q for field name %q", err, tc.name) - } - if (err == nil) != tc.valid { - t.Errorf("field %q: expected valid %t, received err %v", tc.name, tc.valid, err) - } - } -} - -func TestValidLangs(t *testing.T) { - testCases := []struct { - field Field - valid bool - }{ - {Field{Name: "Foo", Value: "String", Language: ""}, true}, - {Field{Name: "Foo", Value: "String", Language: "en"}, true}, - {Field{Name: "Foo", Value: "String", Language: "aussie"}, false}, - {Field{Name: "Foo", Value: "String", Language: "12"}, false}, - {Field{Name: "Foo", Value: HTML("String"), Language: "en"}, true}, - {Field{Name: "Foo", Value: Atom("String"), Language: "en"}, false}, - {Field{Name: "Foo", Value: 42, Language: "en"}, false}, - } - - for _, tt := range testCases { - _, _, err := saveDoc(&FieldList{tt.field}) - if err == nil != tt.valid { - t.Errorf("Field %v, got error %v, wanted valid %t", tt.field, err, tt.valid) - } - } -} - -func TestDuplicateFields(t *testing.T) { - testCases := []struct { - desc string - fields FieldList - errMsg string // Non-empty if we expect an error - }{ - { - desc: "multi string", - fields: FieldList{{Name: "FieldA", Value: "val1"}, {Name: "FieldA", Value: "val2"}, {Name: "FieldA", Value: "val3"}}, - }, - { - desc: "multi atom", - fields: FieldList{{Name: "FieldA", Value: Atom("val1")}, {Name: "FieldA", Value: Atom("val2")}, {Name: "FieldA", Value: Atom("val3")}}, - }, - { - desc: "mixed", - fields: FieldList{{Name: "FieldA", Value: testString}, {Name: "FieldA", Value: testTime}, {Name: "FieldA", Value: float}}, - }, - { - desc: "multi time", - fields: FieldList{{Name: "FieldA", Value: testTime}, {Name: "FieldA", Value: testTime}}, - errMsg: `duplicate time field "FieldA"`, - }, - { - desc: "multi num", - fields: FieldList{{Name: "FieldA", Value: float}, {Name: "FieldA", Value: float}}, - errMsg: `duplicate numeric field "FieldA"`, - }, - } - for _, tc := range testCases { - _, _, err := saveDoc(&tc.fields) - if (err == nil) != (tc.errMsg == "") || (err != nil && !strings.Contains(err.Error(), tc.errMsg)) { - t.Errorf("%s: got err %v, wanted %q", tc.desc, err, tc.errMsg) - } - } -} - -func TestLoadErrFieldMismatch(t *testing.T) { - testCases := []struct { - desc string - dst interface{} - src []*pb.Field - err error - }{ - { - desc: "missing", - dst: &struct{ One string }{}, - src: []*pb.Field{newStringValueField("Two", "woop!", pb.FieldValue_TEXT)}, - err: &ErrFieldMismatch{ - FieldName: "Two", - Reason: "no such struct field", - }, - }, - { - desc: "wrong type", - dst: &struct{ Num float64 }{}, - src: []*pb.Field{newStringValueField("Num", "woop!", pb.FieldValue_TEXT)}, - err: &ErrFieldMismatch{ - FieldName: "Num", - Reason: "type mismatch: float64 for string data", - }, - }, - { - desc: "unsettable", - dst: &struct{ lower string }{}, - src: []*pb.Field{newStringValueField("lower", "woop!", pb.FieldValue_TEXT)}, - err: &ErrFieldMismatch{ - FieldName: "lower", - Reason: "cannot set struct field", - }, - }, - } - for _, tc := range testCases { - err := loadDoc(tc.dst, tc.src, nil, nil) - if !reflect.DeepEqual(err, tc.err) { - t.Errorf("%s, got err %v, wanted %v", tc.desc, err, tc.err) - } - } -} - -func TestLimit(t *testing.T) { - more := func(it *Iterator) error { - if it.limit == 0 { - return errors.New("Iterator.limit should not be zero in next") - } - // Page up to 20 items at once. - ret := 20 - if it.limit > 0 && it.limit < ret { - ret = it.limit - } - it.listRes = make([]*pb.Document, ret) - for i := range it.listRes { - it.listRes[i] = &pb.Document{} - } - return nil - } - - it := &Iterator{ - more: more, - limit: 42, - } - - count := 0 - for { - _, err := it.Next(nil) - if err == Done { - break - } - if err != nil { - t.Fatalf("err after %d: %v", count, err) - } - count++ - } - if count != 42 { - t.Errorf("got %d results, expected 42", count) - } -} - -func TestPut(t *testing.T) { - index, err := Open("Doc") - if err != nil { - t.Fatalf("err from Open: %v", err) - } - - c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(in *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error { - expectedIn := &pb.IndexDocumentRequest{ - Params: &pb.IndexDocumentParams{ - Document: []*pb.Document{ - {Field: protoFields, OrderId: proto.Int32(42)}, - }, - IndexSpec: &pb.IndexSpec{ - Name: proto.String("Doc"), - }, - }, - } - if !proto.Equal(in, expectedIn) { - return fmt.Errorf("unsupported argument:\ngot %v\nwant %v", in, expectedIn) - } - *out = pb.IndexDocumentResponse{ - Status: []*pb.RequestStatus{ - {Code: pb.SearchServiceError_OK.Enum()}, - }, - DocId: []string{ - "doc_id", - }, - } - return nil - }) - - id, err := index.Put(c, "", &FieldListWithMeta{ - Meta: searchMeta, - Fields: searchFields, - }) - if err != nil { - t.Fatal(err) - } - if want := "doc_id"; id != want { - t.Errorf("Got doc ID %q, want %q", id, want) - } -} - -func TestPutAutoOrderID(t *testing.T) { - index, err := Open("Doc") - if err != nil { - t.Fatalf("err from Open: %v", err) - } - - c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(in *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error { - if len(in.Params.GetDocument()) < 1 { - return fmt.Errorf("expected at least one Document, got %v", in) - } - got, want := in.Params.Document[0].GetOrderId(), int32(time.Since(orderIDEpoch).Seconds()) - if d := got - want; -5 > d || d > 5 { - return fmt.Errorf("got OrderId %d, want near %d", got, want) - } - *out = pb.IndexDocumentResponse{ - Status: []*pb.RequestStatus{ - {Code: pb.SearchServiceError_OK.Enum()}, - }, - DocId: []string{ - "doc_id", - }, - } - return nil - }) - - if _, err := index.Put(c, "", &searchFields); err != nil { - t.Fatal(err) - } -} - -func TestPutBadStatus(t *testing.T) { - index, err := Open("Doc") - if err != nil { - t.Fatalf("err from Open: %v", err) - } - - c := aetesting.FakeSingleContext(t, "search", "IndexDocument", func(_ *pb.IndexDocumentRequest, out *pb.IndexDocumentResponse) error { - *out = pb.IndexDocumentResponse{ - Status: []*pb.RequestStatus{ - { - Code: pb.SearchServiceError_INVALID_REQUEST.Enum(), - ErrorDetail: proto.String("insufficient gophers"), - }, - }, - } - return nil - }) - - wantErr := "search: INVALID_REQUEST: insufficient gophers" - if _, err := index.Put(c, "", &searchFields); err == nil || err.Error() != wantErr { - t.Fatalf("Put: got %v error, want %q", err, wantErr) - } -} - -func TestSortOptions(t *testing.T) { - index, err := Open("Doc") - if err != nil { - t.Fatalf("err from Open: %v", err) - } - - noErr := errors.New("") // sentinel error when there isn't one… - - testCases := []struct { - desc string - sort *SortOptions - wantSort []*pb.SortSpec - wantScorer *pb.ScorerSpec - wantErr string - }{ - { - desc: "No SortOptions", - }, - { - desc: "Basic", - sort: &SortOptions{ - Expressions: []SortExpression{ - {Expr: "dog"}, - {Expr: "cat", Reverse: true}, - {Expr: "gopher", Default: "blue"}, - {Expr: "fish", Default: 2.0}, - }, - Limit: 42, - Scorer: MatchScorer, - }, - wantSort: []*pb.SortSpec{ - {SortExpression: proto.String("dog")}, - {SortExpression: proto.String("cat"), SortDescending: proto.Bool(false)}, - {SortExpression: proto.String("gopher"), DefaultValueText: proto.String("blue")}, - {SortExpression: proto.String("fish"), DefaultValueNumeric: proto.Float64(2)}, - }, - wantScorer: &pb.ScorerSpec{ - Limit: proto.Int32(42), - Scorer: pb.ScorerSpec_MATCH_SCORER.Enum(), - }, - }, - { - desc: "Bad expression default", - sort: &SortOptions{ - Expressions: []SortExpression{ - {Expr: "dog", Default: true}, - }, - }, - wantErr: `search: invalid Default type bool for expression "dog"`, - }, - { - desc: "RescoringMatchScorer", - sort: &SortOptions{Scorer: RescoringMatchScorer}, - wantScorer: &pb.ScorerSpec{Scorer: pb.ScorerSpec_RESCORING_MATCH_SCORER.Enum()}, - }, - } - - for _, tt := range testCases { - c := aetesting.FakeSingleContext(t, "search", "Search", func(req *pb.SearchRequest, _ *pb.SearchResponse) error { - params := req.Params - if !reflect.DeepEqual(params.SortSpec, tt.wantSort) { - t.Errorf("%s: params.SortSpec=%v; want %v", tt.desc, params.SortSpec, tt.wantSort) - } - if !reflect.DeepEqual(params.ScorerSpec, tt.wantScorer) { - t.Errorf("%s: params.ScorerSpec=%v; want %v", tt.desc, params.ScorerSpec, tt.wantScorer) - } - return noErr // Always return some error to prevent response parsing. - }) - - it := index.Search(c, "gopher", &SearchOptions{Sort: tt.sort}) - _, err := it.Next(nil) - if err == nil { - t.Fatalf("%s: err==nil; should not happen", tt.desc) - } - if err.Error() != tt.wantErr { - t.Errorf("%s: got error %q, want %q", tt.desc, err, tt.wantErr) - } - } -} - -func TestFieldSpec(t *testing.T) { - index, err := Open("Doc") - if err != nil { - t.Fatalf("err from Open: %v", err) - } - - errFoo := errors.New("foo") // sentinel error when there isn't one. - - testCases := []struct { - desc string - opts *SearchOptions - want *pb.FieldSpec - }{ - { - desc: "No options", - want: &pb.FieldSpec{}, - }, - { - desc: "Fields", - opts: &SearchOptions{ - Fields: []string{"one", "two"}, - }, - want: &pb.FieldSpec{ - Name: []string{"one", "two"}, - }, - }, - { - desc: "Expressions", - opts: &SearchOptions{ - Expressions: []FieldExpression{ - {Name: "one", Expr: "price * quantity"}, - {Name: "two", Expr: "min(daily_use, 10) * rate"}, - }, - }, - want: &pb.FieldSpec{ - Expression: []*pb.FieldSpec_Expression{ - {Name: proto.String("one"), Expression: proto.String("price * quantity")}, - {Name: proto.String("two"), Expression: proto.String("min(daily_use, 10) * rate")}, - }, - }, - }, - } - - for _, tt := range testCases { - c := aetesting.FakeSingleContext(t, "search", "Search", func(req *pb.SearchRequest, _ *pb.SearchResponse) error { - params := req.Params - if !reflect.DeepEqual(params.FieldSpec, tt.want) { - t.Errorf("%s: params.FieldSpec=%v; want %v", tt.desc, params.FieldSpec, tt.want) - } - return errFoo // Always return some error to prevent response parsing. - }) - - it := index.Search(c, "gopher", tt.opts) - if _, err := it.Next(nil); err != errFoo { - t.Fatalf("%s: got error %v; want %v", tt.desc, err, errFoo) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue.go b/Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue.go deleted file mode 100644 index 015c8af3bbf..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue.go +++ /dev/null @@ -1,493 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package taskqueue provides a client for App Engine's taskqueue service. -Using this service, applications may perform work outside a user's request. - -A Task may be constructed manually; alternatively, since the most common -taskqueue operation is to add a single POST task, NewPOSTTask makes it easy. - - t := taskqueue.NewPOSTTask("/worker", url.Values{ - "key": {key}, - }) - taskqueue.Add(c, t, "") // add t to the default queue -*/ -package taskqueue - -import ( - "errors" - "fmt" - "net/http" - "net/url" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - dspb "google.golang.org/appengine/internal/datastore" - pb "google.golang.org/appengine/internal/taskqueue" -) - -var ( - // ErrTaskAlreadyAdded is the error returned by Add and AddMulti when a task has already been added with a particular name. - ErrTaskAlreadyAdded = errors.New("taskqueue: task has already been added") -) - -// RetryOptions let you control whether to retry a task and the backoff intervals between tries. -type RetryOptions struct { - // Number of tries/leases after which the task fails permanently and is deleted. - // If AgeLimit is also set, both limits must be exceeded for the task to fail permanently. - RetryLimit int32 - - // Maximum time allowed since the task's first try before the task fails permanently and is deleted (only for push tasks). - // If RetryLimit is also set, both limits must be exceeded for the task to fail permanently. - AgeLimit time.Duration - - // Minimum time between successive tries (only for push tasks). - MinBackoff time.Duration - - // Maximum time between successive tries (only for push tasks). - MaxBackoff time.Duration - - // Maximum number of times to double the interval between successive tries before the intervals increase linearly (only for push tasks). - MaxDoublings int32 - - // If MaxDoublings is zero, set ApplyZeroMaxDoublings to true to override the default non-zero value. - // Otherwise a zero MaxDoublings is ignored and the default is used. - ApplyZeroMaxDoublings bool -} - -// toRetryParameter converts RetryOptions to pb.TaskQueueRetryParameters. -func (opt *RetryOptions) toRetryParameters() *pb.TaskQueueRetryParameters { - params := &pb.TaskQueueRetryParameters{} - if opt.RetryLimit > 0 { - params.RetryLimit = proto.Int32(opt.RetryLimit) - } - if opt.AgeLimit > 0 { - params.AgeLimitSec = proto.Int64(int64(opt.AgeLimit.Seconds())) - } - if opt.MinBackoff > 0 { - params.MinBackoffSec = proto.Float64(opt.MinBackoff.Seconds()) - } - if opt.MaxBackoff > 0 { - params.MaxBackoffSec = proto.Float64(opt.MaxBackoff.Seconds()) - } - if opt.MaxDoublings > 0 || (opt.MaxDoublings == 0 && opt.ApplyZeroMaxDoublings) { - params.MaxDoublings = proto.Int32(opt.MaxDoublings) - } - return params -} - -// A Task represents a task to be executed. -type Task struct { - // Path is the worker URL for the task. - // If unset, it will default to /_ah/queue/. - Path string - - // Payload is the data for the task. - // This will be delivered as the HTTP request body. - // It is only used when Method is POST, PUT or PULL. - // url.Values' Encode method may be used to generate this for POST requests. - Payload []byte - - // Additional HTTP headers to pass at the task's execution time. - // To schedule the task to be run with an alternate app version - // or backend, set the "Host" header. - Header http.Header - - // Method is the HTTP method for the task ("GET", "POST", etc.), - // or "PULL" if this is task is destined for a pull-based queue. - // If empty, this defaults to "POST". - Method string - - // A name for the task. - // If empty, a name will be chosen. - Name string - - // Delay specifies the duration the task queue service must wait - // before executing the task. - // Either Delay or ETA may be set, but not both. - Delay time.Duration - - // ETA specifies the earliest time a task may be executed (push queues) - // or leased (pull queues). - // Either Delay or ETA may be set, but not both. - ETA time.Time - - // The number of times the task has been dispatched or leased. - RetryCount int32 - - // Tag for the task. Only used when Method is PULL. - Tag string - - // Retry options for this task. May be nil. - RetryOptions *RetryOptions -} - -func (t *Task) method() string { - if t.Method == "" { - return "POST" - } - return t.Method -} - -// NewPOSTTask creates a Task that will POST to a path with the given form data. -func NewPOSTTask(path string, params url.Values) *Task { - h := make(http.Header) - h.Set("Content-Type", "application/x-www-form-urlencoded") - return &Task{ - Path: path, - Payload: []byte(params.Encode()), - Header: h, - Method: "POST", - } -} - -var ( - currentNamespace = http.CanonicalHeaderKey("X-AppEngine-Current-Namespace") - defaultNamespace = http.CanonicalHeaderKey("X-AppEngine-Default-Namespace") -) - -func newAddReq(c appengine.Context, task *Task, queueName string) (*pb.TaskQueueAddRequest, error) { - if queueName == "" { - queueName = "default" - } - eta := task.ETA - if eta.IsZero() { - eta = time.Now().Add(task.Delay) - } else if task.Delay != 0 { - panic("taskqueue: both Delay and ETA are set") - } - req := &pb.TaskQueueAddRequest{ - QueueName: []byte(queueName), - TaskName: []byte(task.Name), - EtaUsec: proto.Int64(eta.UnixNano() / 1e3), - } - method := task.method() - if method == "PULL" { - // Pull-based task - req.Body = task.Payload - req.Mode = pb.TaskQueueMode_PULL.Enum() - if task.Tag != "" { - req.Tag = []byte(task.Tag) - } - } else { - // HTTP-based task - if v, ok := pb.TaskQueueAddRequest_RequestMethod_value[method]; ok { - req.Method = pb.TaskQueueAddRequest_RequestMethod(v).Enum() - } else { - return nil, fmt.Errorf("taskqueue: bad method %q", method) - } - req.Url = []byte(task.Path) - for k, vs := range task.Header { - for _, v := range vs { - req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{ - Key: []byte(k), - Value: []byte(v), - }) - } - } - if method == "POST" || method == "PUT" { - req.Body = task.Payload - } - - // Namespace headers. - if _, ok := task.Header[currentNamespace]; !ok { - // Fetch the current namespace of this request. - ns := internal.VirtAPI(c, "GetNamespace") - req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{ - Key: []byte(currentNamespace), - Value: []byte(ns), - }) - } - if _, ok := task.Header[defaultNamespace]; !ok { - // Fetch the X-AppEngine-Default-Namespace header of this request. - if ns := internal.VirtAPI(c, "GetDefaultNamespace"); ns != "" { - req.Header = append(req.Header, &pb.TaskQueueAddRequest_Header{ - Key: []byte(defaultNamespace), - Value: []byte(ns), - }) - } - } - } - - if task.RetryOptions != nil { - req.RetryParameters = task.RetryOptions.toRetryParameters() - } - - return req, nil -} - -var alreadyAddedErrors = map[pb.TaskQueueServiceError_ErrorCode]bool{ - pb.TaskQueueServiceError_TASK_ALREADY_EXISTS: true, - pb.TaskQueueServiceError_TOMBSTONED_TASK: true, -} - -// Add adds the task to a named queue. -// An empty queue name means that the default queue will be used. -// Add returns an equivalent Task with defaults filled in, including setting -// the task's Name field to the chosen name if the original was empty. -func Add(c appengine.Context, task *Task, queueName string) (*Task, error) { - req, err := newAddReq(c, task, queueName) - if err != nil { - return nil, err - } - res := &pb.TaskQueueAddResponse{} - if err := c.Call("taskqueue", "Add", req, res, nil); err != nil { - apiErr, ok := err.(*internal.APIError) - if ok && alreadyAddedErrors[pb.TaskQueueServiceError_ErrorCode(apiErr.Code)] { - return nil, ErrTaskAlreadyAdded - } - return nil, err - } - resultTask := *task - resultTask.Method = task.method() - if task.Name == "" { - resultTask.Name = string(res.ChosenTaskName) - } - return &resultTask, nil -} - -// AddMulti adds multiple tasks to a named queue. -// An empty queue name means that the default queue will be used. -// AddMulti returns a slice of equivalent tasks with defaults filled in, including setting -// each task's Name field to the chosen name if the original was empty. -// If a given task is badly formed or could not be added, an appengine.MultiError is returned. -func AddMulti(c appengine.Context, tasks []*Task, queueName string) ([]*Task, error) { - req := &pb.TaskQueueBulkAddRequest{ - AddRequest: make([]*pb.TaskQueueAddRequest, len(tasks)), - } - me, any := make(appengine.MultiError, len(tasks)), false - for i, t := range tasks { - req.AddRequest[i], me[i] = newAddReq(c, t, queueName) - any = any || me[i] != nil - } - if any { - return nil, me - } - res := &pb.TaskQueueBulkAddResponse{} - if err := c.Call("taskqueue", "BulkAdd", req, res, nil); err != nil { - return nil, err - } - if len(res.Taskresult) != len(tasks) { - return nil, errors.New("taskqueue: server error") - } - tasksOut := make([]*Task, len(tasks)) - for i, tr := range res.Taskresult { - tasksOut[i] = new(Task) - *tasksOut[i] = *tasks[i] - tasksOut[i].Method = tasksOut[i].method() - if tasksOut[i].Name == "" { - tasksOut[i].Name = string(tr.ChosenTaskName) - } - if *tr.Result != pb.TaskQueueServiceError_OK { - if alreadyAddedErrors[*tr.Result] { - me[i] = ErrTaskAlreadyAdded - } else { - me[i] = &internal.APIError{ - Service: "taskqueue", - Code: int32(*tr.Result), - } - } - any = true - } - } - if any { - return tasksOut, me - } - return tasksOut, nil -} - -// Delete deletes a task from a named queue. -func Delete(c appengine.Context, task *Task, queueName string) error { - err := DeleteMulti(c, []*Task{task}, queueName) - if me, ok := err.(appengine.MultiError); ok { - return me[0] - } - return err -} - -// DeleteMulti deletes multiple tasks from a named queue. -// If a given task could not be deleted, an appengine.MultiError is returned. -func DeleteMulti(c appengine.Context, tasks []*Task, queueName string) error { - taskNames := make([][]byte, len(tasks)) - for i, t := range tasks { - taskNames[i] = []byte(t.Name) - } - if queueName == "" { - queueName = "default" - } - req := &pb.TaskQueueDeleteRequest{ - QueueName: []byte(queueName), - TaskName: taskNames, - } - res := &pb.TaskQueueDeleteResponse{} - if err := c.Call("taskqueue", "Delete", req, res, nil); err != nil { - return err - } - if a, b := len(req.TaskName), len(res.Result); a != b { - return fmt.Errorf("taskqueue: internal error: requested deletion of %d tasks, got %d results", a, b) - } - me, any := make(appengine.MultiError, len(res.Result)), false - for i, ec := range res.Result { - if ec != pb.TaskQueueServiceError_OK { - me[i] = &internal.APIError{ - Service: "taskqueue", - Code: int32(ec), - } - any = true - } - } - if any { - return me - } - return nil -} - -func lease(c appengine.Context, maxTasks int, queueName string, leaseTime int, groupByTag bool, tag []byte) ([]*Task, error) { - if queueName == "" { - queueName = "default" - } - req := &pb.TaskQueueQueryAndOwnTasksRequest{ - QueueName: []byte(queueName), - LeaseSeconds: proto.Float64(float64(leaseTime)), - MaxTasks: proto.Int64(int64(maxTasks)), - GroupByTag: proto.Bool(groupByTag), - Tag: tag, - } - res := &pb.TaskQueueQueryAndOwnTasksResponse{} - callOpts := &internal.CallOptions{ - Timeout: 10 * time.Second, - } - if err := c.Call("taskqueue", "QueryAndOwnTasks", req, res, callOpts); err != nil { - return nil, err - } - tasks := make([]*Task, len(res.Task)) - for i, t := range res.Task { - tasks[i] = &Task{ - Payload: t.Body, - Name: string(t.TaskName), - Method: "PULL", - ETA: time.Unix(0, *t.EtaUsec*1e3), - RetryCount: *t.RetryCount, - Tag: string(t.Tag), - } - } - return tasks, nil -} - -// Lease leases tasks from a queue. -// leaseTime is in seconds. -// The number of tasks fetched will be at most maxTasks. -func Lease(c appengine.Context, maxTasks int, queueName string, leaseTime int) ([]*Task, error) { - return lease(c, maxTasks, queueName, leaseTime, false, nil) -} - -// LeaseByTag leases tasks from a queue, grouped by tag. -// If tag is empty, then the returned tasks are grouped by the tag of the task with earliest ETA. -// leaseTime is in seconds. -// The number of tasks fetched will be at most maxTasks. -func LeaseByTag(c appengine.Context, maxTasks int, queueName string, leaseTime int, tag string) ([]*Task, error) { - return lease(c, maxTasks, queueName, leaseTime, true, []byte(tag)) -} - -// Purge removes all tasks from a queue. -func Purge(c appengine.Context, queueName string) error { - if queueName == "" { - queueName = "default" - } - req := &pb.TaskQueuePurgeQueueRequest{ - QueueName: []byte(queueName), - } - res := &pb.TaskQueuePurgeQueueResponse{} - return c.Call("taskqueue", "PurgeQueue", req, res, nil) -} - -// ModifyLease modifies the lease of a task. -// Used to request more processing time, or to abandon processing. -// leaseTime is in seconds and must not be negative. -func ModifyLease(c appengine.Context, task *Task, queueName string, leaseTime int) error { - if queueName == "" { - queueName = "default" - } - req := &pb.TaskQueueModifyTaskLeaseRequest{ - QueueName: []byte(queueName), - TaskName: []byte(task.Name), - EtaUsec: proto.Int64(task.ETA.UnixNano() / 1e3), // Used to verify ownership. - LeaseSeconds: proto.Float64(float64(leaseTime)), - } - res := &pb.TaskQueueModifyTaskLeaseResponse{} - if err := c.Call("taskqueue", "ModifyTaskLease", req, res, nil); err != nil { - return err - } - task.ETA = time.Unix(0, *res.UpdatedEtaUsec*1e3) - return nil -} - -// QueueStatistics represents statistics about a single task queue. -type QueueStatistics struct { - Tasks int // may be an approximation - OldestETA time.Time // zero if there are no pending tasks - - Executed1Minute int // tasks executed in the last minute - InFlight int // tasks executing now - EnforcedRate float64 // requests per second -} - -// QueueStats retrieves statistics about queues. -func QueueStats(c appengine.Context, queueNames []string) ([]QueueStatistics, error) { - req := &pb.TaskQueueFetchQueueStatsRequest{ - QueueName: make([][]byte, len(queueNames)), - } - for i, q := range queueNames { - if q == "" { - q = "default" - } - req.QueueName[i] = []byte(q) - } - res := &pb.TaskQueueFetchQueueStatsResponse{} - callOpts := &internal.CallOptions{ - Timeout: 10 * time.Second, - } - if err := c.Call("taskqueue", "FetchQueueStats", req, res, callOpts); err != nil { - return nil, err - } - qs := make([]QueueStatistics, len(res.Queuestats)) - for i, qsg := range res.Queuestats { - qs[i] = QueueStatistics{ - Tasks: int(*qsg.NumTasks), - } - if eta := *qsg.OldestEtaUsec; eta > -1 { - qs[i].OldestETA = time.Unix(0, eta*1e3) - } - if si := qsg.ScannerInfo; si != nil { - qs[i].Executed1Minute = int(*si.ExecutedLastMinute) - qs[i].InFlight = int(si.GetRequestsInFlight()) - qs[i].EnforcedRate = si.GetEnforcedRate() - } - } - return qs, nil -} - -func setTransaction(x *pb.TaskQueueAddRequest, t *dspb.Transaction) { - x.Transaction = t -} - -func init() { - internal.RegisterErrorCodeMap("taskqueue", pb.TaskQueueServiceError_ErrorCode_name) - - // Datastore error codes are shifted by DATASTORE_ERROR when presented through taskqueue. - dsCode := int32(pb.TaskQueueServiceError_DATASTORE_ERROR) + int32(dspb.Error_TIMEOUT) - internal.RegisterTimeoutErrorCode("taskqueue", dsCode) - - // Transaction registration. - internal.RegisterTransactionSetter(setTransaction) - internal.RegisterTransactionSetter(func(x *pb.TaskQueueBulkAddRequest, t *dspb.Transaction) { - for _, req := range x.AddRequest { - setTransaction(req, t) - } - }) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue_test.go b/Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue_test.go deleted file mode 100644 index 7a06aa4af42..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/taskqueue/taskqueue_test.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2014 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package taskqueue - -import ( - "errors" - "reflect" - "testing" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - "google.golang.org/appengine/internal/aetesting" - pb "google.golang.org/appengine/internal/taskqueue" -) - -func TestAddErrors(t *testing.T) { - var tests = []struct { - err, want error - sameErr bool // if true, should return err exactly - }{ - { - err: &internal.APIError{ - Service: "taskqueue", - Code: int32(pb.TaskQueueServiceError_TASK_ALREADY_EXISTS), - }, - want: ErrTaskAlreadyAdded, - }, - { - err: &internal.APIError{ - Service: "taskqueue", - Code: int32(pb.TaskQueueServiceError_TOMBSTONED_TASK), - }, - want: ErrTaskAlreadyAdded, - }, - { - err: &internal.APIError{ - Service: "taskqueue", - Code: int32(pb.TaskQueueServiceError_UNKNOWN_QUEUE), - }, - want: errors.New("not used"), - sameErr: true, - }, - } - for _, tc := range tests { - c := aetesting.FakeSingleContext(t, "taskqueue", "Add", func(req *pb.TaskQueueAddRequest, res *pb.TaskQueueAddResponse) error { - // don't fill in any of the response - return tc.err - }) - task := &Task{Path: "/worker", Method: "PULL"} - _, err := Add(c, task, "a-queue") - want := tc.want - if tc.sameErr { - want = tc.err - } - if err != want { - t.Errorf("Add with tc.err = %v, got %#v, want = %#v", tc.err, err, want) - } - } -} - -func TestAddMulti(t *testing.T) { - c := aetesting.FakeSingleContext(t, "taskqueue", "BulkAdd", func(req *pb.TaskQueueBulkAddRequest, res *pb.TaskQueueBulkAddResponse) error { - res.Taskresult = []*pb.TaskQueueBulkAddResponse_TaskResult{ - { - Result: pb.TaskQueueServiceError_OK.Enum(), - }, - { - Result: pb.TaskQueueServiceError_TASK_ALREADY_EXISTS.Enum(), - }, - { - Result: pb.TaskQueueServiceError_TOMBSTONED_TASK.Enum(), - }, - { - Result: pb.TaskQueueServiceError_INTERNAL_ERROR.Enum(), - }, - } - return nil - }) - tasks := []*Task{ - {Path: "/worker", Method: "PULL"}, - {Path: "/worker", Method: "PULL"}, - {Path: "/worker", Method: "PULL"}, - {Path: "/worker", Method: "PULL"}, - } - r, err := AddMulti(c, tasks, "a-queue") - if len(r) != len(tasks) { - t.Fatalf("AddMulti returned %d tasks, want %d", len(r), len(tasks)) - } - want := appengine.MultiError{ - nil, - ErrTaskAlreadyAdded, - ErrTaskAlreadyAdded, - &internal.APIError{ - Service: "taskqueue", - Code: int32(pb.TaskQueueServiceError_INTERNAL_ERROR), - }, - } - if !reflect.DeepEqual(err, want) { - t.Errorf("AddMulti got %v, wanted %v", err, want) - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/timeout.go b/Godeps/_workspace/src/google.golang.org/appengine/timeout.go deleted file mode 100644 index 47fda68ec24..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/timeout.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2013 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package appengine - -import ( - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal" -) - -// IsTimeoutError reports whether err is a timeout error. -func IsTimeoutError(err error) bool { - if t, ok := err.(interface { - IsTimeout() bool - }); ok { - return t.IsTimeout() - } - return false -} - -// Timeout returns a replacement context that uses d as the default API RPC timeout. -func Timeout(c Context, d time.Duration) Context { - return &timeoutContext{ - Context: c, - d: d, - } -} - -type timeoutContext struct { - Context - d time.Duration -} - -func (t *timeoutContext) Call(service, method string, in, out proto.Message, opts *internal.CallOptions) error { - // Only affect calls that don't have a timeout. - if opts == nil || opts.Timeout == 0 { - newOpts := new(internal.CallOptions) - if opts != nil { - *newOpts = *opts - } - newOpts.Timeout = t.d - opts = newOpts - } - return t.Context.Call(service, method, in, out, opts) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/timeout_test.go b/Godeps/_workspace/src/google.golang.org/appengine/timeout_test.go deleted file mode 100644 index 52df3fc6516..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/timeout_test.go +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright 2013 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package appengine - -import ( - "testing" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal" -) - -type timeoutRecorder struct { - Context - d time.Duration -} - -func (tr *timeoutRecorder) Call(_, _ string, _, _ proto.Message, opts *internal.CallOptions) error { - tr.d = 5 * time.Second // default - if opts != nil { - tr.d = opts.Timeout - } - return nil -} - -func TestTimeout(t *testing.T) { - tests := []struct { - desc string - opts *internal.CallOptions - want time.Duration - }{ - { - "no opts", - nil, - 6 * time.Second, - }, - { - "empty opts", - &internal.CallOptions{}, - 6 * time.Second, - }, - { - "set opts", - &internal.CallOptions{Timeout: 7 * time.Second}, - 7 * time.Second, - }, - } - for _, test := range tests { - tr := new(timeoutRecorder) - c := Timeout(tr, 6*time.Second) - c.Call("service", "method", nil, nil, test.opts) - if tr.d != test.want { - t.Errorf("%s: timeout was %v, want %v", test.desc, tr.d, test.want) - } - } -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/urlfetch/urlfetch.go b/Godeps/_workspace/src/google.golang.org/appengine/urlfetch/urlfetch.go deleted file mode 100644 index 2de61af9a74..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/urlfetch/urlfetch.go +++ /dev/null @@ -1,211 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package urlfetch provides an http.RoundTripper implementation -// for fetching URLs via App Engine's urlfetch service. -package urlfetch - -import ( - "errors" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "strconv" - "strings" - "time" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/urlfetch" -) - -// Transport is an implementation of http.RoundTripper for -// App Engine. Users should generally create an http.Client using -// this transport and use the Client rather than using this transport -// directly. -type Transport struct { - Context appengine.Context - Deadline time.Duration // zero means 5-second default - - // Controls whether the application checks the validity of SSL certificates - // over HTTPS connections. A value of false (the default) instructs the - // application to send a request to the server only if the certificate is - // valid and signed by a trusted certificate authority (CA), and also - // includes a hostname that matches the certificate. A value of true - // instructs the application to perform no certificate validation. - AllowInvalidServerCertificate bool -} - -// Verify statically that *Transport implements http.RoundTripper. -var _ http.RoundTripper = (*Transport)(nil) - -// Client returns an *http.Client using a default urlfetch Transport. This -// client will have the default deadline of 5 seconds, and will check the -// validity of SSL certificates. -func Client(context appengine.Context) *http.Client { - return &http.Client{ - Transport: &Transport{ - Context: context, - }, - } -} - -type bodyReader struct { - content []byte - truncated bool - closed bool -} - -// ErrTruncatedBody is the error returned after the final Read() from a -// response's Body if the body has been truncated by App Engine's proxy. -var ErrTruncatedBody = errors.New("urlfetch: truncated body") - -func statusCodeToText(code int) string { - if t := http.StatusText(code); t != "" { - return t - } - return strconv.Itoa(code) -} - -func (br *bodyReader) Read(p []byte) (n int, err error) { - if br.closed { - if br.truncated { - return 0, ErrTruncatedBody - } - return 0, io.EOF - } - n = copy(p, br.content) - if n > 0 { - br.content = br.content[n:] - return - } - if br.truncated { - br.closed = true - return 0, ErrTruncatedBody - } - return 0, io.EOF -} - -func (br *bodyReader) Close() error { - br.closed = true - br.content = nil - return nil -} - -// A map of the URL Fetch-accepted methods that take a request body. -var methodAcceptsRequestBody = map[string]bool{ - "POST": true, - "PUT": true, - "PATCH": true, -} - -// urlString returns a valid string given a URL. This function is necessary because -// the String method of URL doesn't correctly handle URLs with non-empty Opaque values. -// See http://code.google.com/p/go/issues/detail?id=4860. -func urlString(u *url.URL) string { - if u.Opaque == "" || strings.HasPrefix(u.Opaque, "//") { - return u.String() - } - aux := *u - aux.Opaque = "//" + aux.Host + aux.Opaque - return aux.String() -} - -// RoundTrip issues a single HTTP request and returns its response. Per the -// http.RoundTripper interface, RoundTrip only returns an error if there -// was an unsupported request or the URL Fetch proxy fails. -// Note that HTTP response codes such as 5xx, 403, 404, etc are not -// errors as far as the transport is concerned and will be returned -// with err set to nil. -func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error) { - methNum, ok := pb.URLFetchRequest_RequestMethod_value[req.Method] - if !ok { - return nil, fmt.Errorf("urlfetch: unsupported HTTP method %q", req.Method) - } - - method := pb.URLFetchRequest_RequestMethod(methNum) - - freq := &pb.URLFetchRequest{ - Method: &method, - Url: proto.String(urlString(req.URL)), - FollowRedirects: proto.Bool(false), // http.Client's responsibility - MustValidateServerCertificate: proto.Bool(!t.AllowInvalidServerCertificate), - } - opts := &internal.CallOptions{} - - if t.Deadline != 0 { - freq.Deadline = proto.Float64(t.Deadline.Seconds()) - opts.Timeout = t.Deadline - } - - for k, vals := range req.Header { - for _, val := range vals { - freq.Header = append(freq.Header, &pb.URLFetchRequest_Header{ - Key: proto.String(k), - Value: proto.String(val), - }) - } - } - if methodAcceptsRequestBody[req.Method] && req.Body != nil { - // Avoid a []byte copy if req.Body has a Bytes method. - switch b := req.Body.(type) { - case interface { - Bytes() []byte - }: - freq.Payload = b.Bytes() - default: - freq.Payload, err = ioutil.ReadAll(req.Body) - if err != nil { - return nil, err - } - } - } - - fres := &pb.URLFetchResponse{} - if err := t.Context.Call("urlfetch", "Fetch", freq, fres, opts); err != nil { - return nil, err - } - - res = &http.Response{} - res.StatusCode = int(*fres.StatusCode) - res.Status = fmt.Sprintf("%d %s", res.StatusCode, statusCodeToText(res.StatusCode)) - res.Header = make(http.Header) - res.Request = req - - // Faked: - res.ProtoMajor = 1 - res.ProtoMinor = 1 - res.Proto = "HTTP/1.1" - res.Close = true - - for _, h := range fres.Header { - hkey := http.CanonicalHeaderKey(*h.Key) - hval := *h.Value - if hkey == "Content-Length" { - // Will get filled in below for all but HEAD requests. - if req.Method == "HEAD" { - res.ContentLength, _ = strconv.ParseInt(hval, 10, 64) - } - continue - } - res.Header.Add(hkey, hval) - } - - if req.Method != "HEAD" { - res.ContentLength = int64(len(fres.Content)) - } - - truncated := fres.GetContentWasTruncated() - res.Body = &bodyReader{content: fres.Content, truncated: truncated} - return -} - -func init() { - internal.RegisterErrorCodeMap("urlfetch", pb.URLFetchServiceError_ErrorCode_name) - internal.RegisterTimeoutErrorCode("urlfetch", int32(pb.URLFetchServiceError_DEADLINE_EXCEEDED)) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/user/oauth.go b/Godeps/_workspace/src/google.golang.org/appengine/user/oauth.go deleted file mode 100644 index 3ae1ad11395..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/user/oauth.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2012 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package user - -import ( - "google.golang.org/appengine" - pb "google.golang.org/appengine/internal/user" -) - -// CurrentOAuth returns the user associated with the OAuth consumer making this -// request. If the OAuth consumer did not make a valid OAuth request, or the -// scope is non-empty and the current user does not have this scope, this method -// will return an error. -func CurrentOAuth(c appengine.Context, scope string) (*User, error) { - req := &pb.GetOAuthUserRequest{} - if scope != "" { - req.Scope = &scope - } - res := &pb.GetOAuthUserResponse{} - - err := c.Call("user", "GetOAuthUser", req, res, nil) - if err != nil { - return nil, err - } - return &User{ - Email: *res.Email, - AuthDomain: *res.AuthDomain, - Admin: res.GetIsAdmin(), - ID: *res.UserId, - }, nil -} - -// OAuthConsumerKey returns the OAuth consumer key provided with the current -// request. This method will return an error if the OAuth request was invalid. -func OAuthConsumerKey(c appengine.Context) (string, error) { - req := &pb.CheckOAuthSignatureRequest{} - res := &pb.CheckOAuthSignatureResponse{} - - err := c.Call("user", "CheckOAuthSignature", req, res, nil) - if err != nil { - return "", err - } - return *res.OauthConsumerKey, err -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/user/user.go b/Godeps/_workspace/src/google.golang.org/appengine/user/user.go deleted file mode 100644 index c53d00b705f..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/user/user.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// Package user provides a client for App Engine's user authentication service. -package user - -import ( - "strings" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/user" -) - -// User represents a user of the application. -type User struct { - Email string - AuthDomain string - Admin bool - - // ID is the unique permanent ID of the user. - // It is populated if the Email is associated - // with a Google account, or empty otherwise. - ID string - - FederatedIdentity string - FederatedProvider string -} - -// String returns a displayable name for the user. -func (u *User) String() string { - if u.AuthDomain != "" && strings.HasSuffix(u.Email, "@"+u.AuthDomain) { - return u.Email[:len(u.Email)-len("@"+u.AuthDomain)] - } - if u.FederatedIdentity != "" { - return u.FederatedIdentity - } - return u.Email -} - -// LoginURL returns a URL that, when visited, prompts the user to sign in, -// then redirects the user to the URL specified by dest. -func LoginURL(c appengine.Context, dest string) (string, error) { - return LoginURLFederated(c, dest, "") -} - -// LoginURLFederated is like LoginURL but accepts a user's OpenID identifier. -func LoginURLFederated(c appengine.Context, dest, identity string) (string, error) { - req := &pb.CreateLoginURLRequest{ - DestinationUrl: proto.String(dest), - } - if identity != "" { - req.FederatedIdentity = proto.String(identity) - } - res := &pb.CreateLoginURLResponse{} - if err := c.Call("user", "CreateLoginURL", req, res, nil); err != nil { - return "", err - } - return *res.LoginUrl, nil -} - -// LogoutURL returns a URL that, when visited, signs the user out, -// then redirects the user to the URL specified by dest. -func LogoutURL(c appengine.Context, dest string) (string, error) { - req := &pb.CreateLogoutURLRequest{ - DestinationUrl: proto.String(dest), - } - res := &pb.CreateLogoutURLResponse{} - if err := c.Call("user", "CreateLogoutURL", req, res, nil); err != nil { - return "", err - } - return *res.LogoutUrl, nil -} - -// Current returns the currently logged-in user, -// or nil if the user is not signed in. -func Current(c appengine.Context) *User { - u := &User{ - Email: internal.VirtAPI(c, "user:Email"), - AuthDomain: internal.VirtAPI(c, "user:AuthDomain"), - ID: internal.VirtAPI(c, "user:ID"), - Admin: internal.VirtAPI(c, "user:IsAdmin") == "1", - FederatedIdentity: internal.VirtAPI(c, "user:FederatedIdentity"), - FederatedProvider: internal.VirtAPI(c, "user:FederatedProvider"), - } - if u.Email == "" && u.FederatedIdentity == "" { - return nil - } - return u -} - -// IsAdmin returns true if the current user is signed in and -// is currently registered as an administrator of the application. -func IsAdmin(c appengine.Context) bool { - return internal.VirtAPI(c, "user:IsAdmin") == "1" -} - -func init() { - internal.RegisterErrorCodeMap("user", pb.UserServiceError_ErrorCode_name) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/user/user_test.go b/Godeps/_workspace/src/google.golang.org/appengine/user/user_test.go deleted file mode 100644 index 77b9404db2e..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/user/user_test.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package user - -import ( - "fmt" - "net/http" - "testing" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine/internal" - "google.golang.org/appengine/internal/aetesting" - pb "google.golang.org/appengine/internal/user" -) - -func baseReq() *http.Request { - return &http.Request{ - Header: http.Header{}, - } -} - -type basicUserTest struct { - nickname, email, authDomain, admin string - // expectations - isNil, isAdmin bool - displayName string -} - -var basicUserTests = []basicUserTest{ - {"", "", "", "0", true, false, ""}, - {"ken", "ken@example.com", "example.com", "0", false, false, "ken"}, - {"ken", "ken@example.com", "auth_domain.com", "1", false, true, "ken@example.com"}, -} - -func TestBasicUserAPI(t *testing.T) { - for i, tc := range basicUserTests { - req := baseReq() - req.Header.Set("X-AppEngine-User-Nickname", tc.nickname) - req.Header.Set("X-AppEngine-User-Email", tc.email) - req.Header.Set("X-AppEngine-Auth-Domain", tc.authDomain) - req.Header.Set("X-AppEngine-User-Is-Admin", tc.admin) - - c := internal.ContextForTesting(req) - - if ga := IsAdmin(c); ga != tc.isAdmin { - t.Errorf("test %d: expected IsAdmin(c) = %v, got %v", i, tc.isAdmin, ga) - } - - u := Current(c) - if tc.isNil { - if u != nil { - t.Errorf("test %d: expected u == nil, got %+v", i, u) - } - continue - } - if u == nil { - t.Errorf("test %d: expected u != nil, got nil", i) - continue - } - if u.Email != tc.email { - t.Errorf("test %d: expected u.Email = %q, got %q", i, tc.email, u.Email) - } - if gs := u.String(); gs != tc.displayName { - t.Errorf("test %d: expected u.String() = %q, got %q", i, tc.displayName, gs) - } - if u.Admin != tc.isAdmin { - t.Errorf("test %d: expected u.Admin = %v, got %v", i, tc.isAdmin, u.Admin) - } - } -} - -func TestLoginURL(t *testing.T) { - expectedQuery := &pb.CreateLoginURLRequest{ - DestinationUrl: proto.String("/destination"), - } - const expectedDest = "/redir/dest" - c := aetesting.FakeSingleContext(t, "user", "CreateLoginURL", func(req *pb.CreateLoginURLRequest, res *pb.CreateLoginURLResponse) error { - if !proto.Equal(req, expectedQuery) { - return fmt.Errorf("got %v, want %v", req, expectedQuery) - } - res.LoginUrl = proto.String(expectedDest) - return nil - }) - - url, err := LoginURL(c, "/destination") - if err != nil { - t.Fatalf("LoginURL failed: %v", err) - } - if url != expectedDest { - t.Errorf("got %v, want %v", url, expectedDest) - } -} - -// TODO(dsymonds): Add test for LogoutURL. diff --git a/Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp.go b/Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp.go deleted file mode 100644 index d005760b45c..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp.go +++ /dev/null @@ -1,251 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -/* -Package xmpp provides the means to send and receive instant messages -to and from users of XMPP-compatible services. - -To send a message, - m := &xmpp.Message{ - To: []string{"kaylee@example.com"}, - Body: `Hi! How's the carrot?`, - } - err := m.Send(c) - -To receive messages, - func init() { - xmpp.Handle(handleChat) - } - - func handleChat(c appengine.Context, m *xmpp.Message) { - // ... - } -*/ -package xmpp - -import ( - "errors" - "fmt" - "net/http" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal" - pb "google.golang.org/appengine/internal/xmpp" -) - -// Message represents an incoming chat message. -type Message struct { - // Sender is the JID of the sender. - // Optional for outgoing messages. - Sender string - - // To is the intended recipients of the message. - // Incoming messages will have exactly one element. - To []string - - // Body is the body of the message. - Body string - - // Type is the message type, per RFC 3921. - // It defaults to "chat". - Type string - - // RawXML is whether the body contains raw XML. - RawXML bool -} - -// Presence represents an outgoing presence update. -type Presence struct { - // Sender is the JID (optional). - Sender string - - // The intended recipient of the presence update. - To string - - // Type, per RFC 3921 (optional). Defaults to "available". - Type string - - // State of presence (optional). - // Valid values: "away", "chat", "xa", "dnd" (RFC 3921). - State string - - // Free text status message (optional). - Status string -} - -var ( - ErrPresenceUnavailable = errors.New("xmpp: presence unavailable") - ErrInvalidJID = errors.New("xmpp: invalid JID") -) - -// Handle arranges for f to be called for incoming XMPP messages. -// Only messages of type "chat" or "normal" will be handled. -func Handle(f func(c appengine.Context, m *Message)) { - http.HandleFunc("/_ah/xmpp/message/chat/", func(_ http.ResponseWriter, r *http.Request) { - f(appengine.NewContext(r), &Message{ - Sender: r.FormValue("from"), - To: []string{r.FormValue("to")}, - Body: r.FormValue("body"), - }) - }) -} - -// Send sends a message. -// If any failures occur with specific recipients, the error will be an appengine.MultiError. -func (m *Message) Send(c appengine.Context) error { - req := &pb.XmppMessageRequest{ - Jid: m.To, - Body: &m.Body, - RawXml: &m.RawXML, - } - if m.Type != "" && m.Type != "chat" { - req.Type = &m.Type - } - if m.Sender != "" { - req.FromJid = &m.Sender - } - res := &pb.XmppMessageResponse{} - if err := c.Call("xmpp", "SendMessage", req, res, nil); err != nil { - return err - } - - if len(res.Status) != len(req.Jid) { - return fmt.Errorf("xmpp: sent message to %d JIDs, but only got %d statuses back", len(req.Jid), len(res.Status)) - } - me, any := make(appengine.MultiError, len(req.Jid)), false - for i, st := range res.Status { - if st != pb.XmppMessageResponse_NO_ERROR { - me[i] = errors.New(st.String()) - any = true - } - } - if any { - return me - } - return nil -} - -// Invite sends an invitation. If the from address is an empty string -// the default (yourapp@appspot.com/bot) will be used. -func Invite(c appengine.Context, to, from string) error { - req := &pb.XmppInviteRequest{ - Jid: &to, - } - if from != "" { - req.FromJid = &from - } - res := &pb.XmppInviteResponse{} - return c.Call("xmpp", "SendInvite", req, res, nil) -} - -// Send sends a presence update. -func (p *Presence) Send(c appengine.Context) error { - req := &pb.XmppSendPresenceRequest{ - Jid: &p.To, - } - if p.State != "" { - req.Show = &p.State - } - if p.Type != "" { - req.Type = &p.Type - } - if p.Sender != "" { - req.FromJid = &p.Sender - } - if p.Status != "" { - req.Status = &p.Status - } - res := &pb.XmppSendPresenceResponse{} - return c.Call("xmpp", "SendPresence", req, res, nil) -} - -var presenceMap = map[pb.PresenceResponse_SHOW]string{ - pb.PresenceResponse_NORMAL: "", - pb.PresenceResponse_AWAY: "away", - pb.PresenceResponse_DO_NOT_DISTURB: "dnd", - pb.PresenceResponse_CHAT: "chat", - pb.PresenceResponse_EXTENDED_AWAY: "xa", -} - -// GetPresence retrieves a user's presence. -// If the from address is an empty string the default -// (yourapp@appspot.com/bot) will be used. -// Possible return values are "", "away", "dnd", "chat", "xa". -// ErrPresenceUnavailable is returned if the presence is unavailable. -func GetPresence(c appengine.Context, to string, from string) (string, error) { - req := &pb.PresenceRequest{ - Jid: &to, - } - if from != "" { - req.FromJid = &from - } - res := &pb.PresenceResponse{} - if err := c.Call("xmpp", "GetPresence", req, res, nil); err != nil { - return "", err - } - if !*res.IsAvailable || res.Presence == nil { - return "", ErrPresenceUnavailable - } - presence, ok := presenceMap[*res.Presence] - if ok { - return presence, nil - } - return "", fmt.Errorf("xmpp: unknown presence %v", *res.Presence) -} - -// GetPresenceMulti retrieves multiple users' presence. -// If the from address is an empty string the default -// (yourapp@appspot.com/bot) will be used. -// Possible return values are "", "away", "dnd", "chat", "xa". -// If any presence is unavailable, an appengine.MultiError is returned -func GetPresenceMulti(c appengine.Context, to []string, from string) ([]string, error) { - req := &pb.BulkPresenceRequest{ - Jid: to, - } - if from != "" { - req.FromJid = &from - } - res := &pb.BulkPresenceResponse{} - - if err := c.Call("xmpp", "BulkGetPresence", req, res, nil); err != nil { - return nil, err - } - - presences := make([]string, 0, len(res.PresenceResponse)) - errs := appengine.MultiError{} - - addResult := func(presence string, err error) { - presences = append(presences, presence) - errs = append(errs, err) - } - - anyErr := false - for _, subres := range res.PresenceResponse { - if !subres.GetValid() { - anyErr = true - addResult("", ErrInvalidJID) - continue - } - if !*subres.IsAvailable || subres.Presence == nil { - anyErr = true - addResult("", ErrPresenceUnavailable) - continue - } - presence, ok := presenceMap[*subres.Presence] - if ok { - addResult(presence, nil) - } else { - anyErr = true - addResult("", fmt.Errorf("xmpp: unknown presence %q", *subres.Presence)) - } - } - if anyErr { - return presences, errs - } - return presences, nil -} - -func init() { - internal.RegisterErrorCodeMap("xmpp", pb.XmppServiceError_ErrorCode_name) -} diff --git a/Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp_test.go b/Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp_test.go deleted file mode 100644 index c3030d36d90..00000000000 --- a/Godeps/_workspace/src/google.golang.org/appengine/xmpp/xmpp_test.go +++ /dev/null @@ -1,173 +0,0 @@ -// Copyright 2011 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -package xmpp - -import ( - "fmt" - "reflect" - "testing" - - "github.com/golang/protobuf/proto" - - "google.golang.org/appengine" - "google.golang.org/appengine/internal/aetesting" - pb "google.golang.org/appengine/internal/xmpp" -) - -func newPresenceResponse(isAvailable bool, presence pb.PresenceResponse_SHOW, valid bool) *pb.PresenceResponse { - return &pb.PresenceResponse{ - IsAvailable: proto.Bool(isAvailable), - Presence: presence.Enum(), - Valid: proto.Bool(valid), - } -} - -func setPresenceResponse(m *pb.PresenceResponse, isAvailable bool, presence pb.PresenceResponse_SHOW, valid bool) { - m.IsAvailable = &isAvailable - m.Presence = presence.Enum() - m.Valid = &valid -} - -func TestGetPresence(t *testing.T) { - c := aetesting.FakeSingleContext(t, "xmpp", "GetPresence", func(in *pb.PresenceRequest, out *pb.PresenceResponse) error { - if jid := in.GetJid(); jid != "user@example.com" { - return fmt.Errorf("bad jid %q", jid) - } - setPresenceResponse(out, true, pb.PresenceResponse_CHAT, true) - return nil - }) - - presence, err := GetPresence(c, "user@example.com", "") - if err != nil { - t.Fatalf("GetPresence: %v", err) - } - - if presence != "chat" { - t.Errorf("GetPresence: got %#v, want %#v", presence, pb.PresenceResponse_CHAT) - } -} - -func TestGetPresenceMultiSingleJID(t *testing.T) { - c := aetesting.FakeSingleContext(t, "xmpp", "BulkGetPresence", func(in *pb.BulkPresenceRequest, out *pb.BulkPresenceResponse) error { - if !reflect.DeepEqual(in.Jid, []string{"user@example.com"}) { - return fmt.Errorf("bad request jids %#v", in.Jid) - } - out.PresenceResponse = []*pb.PresenceResponse{ - newPresenceResponse(true, pb.PresenceResponse_NORMAL, true), - } - return nil - }) - - presence, err := GetPresenceMulti(c, []string{"user@example.com"}, "") - if err != nil { - t.Fatalf("GetPresenceMulti: %v", err) - } - if !reflect.DeepEqual(presence, []string{""}) { - t.Errorf("GetPresenceMulti: got %s, want %s", presence, []string{""}) - } -} - -func TestGetPresenceMultiJID(t *testing.T) { - c := aetesting.FakeSingleContext(t, "xmpp", "BulkGetPresence", func(in *pb.BulkPresenceRequest, out *pb.BulkPresenceResponse) error { - if !reflect.DeepEqual(in.Jid, []string{"user@example.com", "user2@example.com"}) { - return fmt.Errorf("bad request jids %#v", in.Jid) - } - out.PresenceResponse = []*pb.PresenceResponse{ - newPresenceResponse(true, pb.PresenceResponse_NORMAL, true), - newPresenceResponse(true, pb.PresenceResponse_AWAY, true), - } - return nil - }) - - jids := []string{"user@example.com", "user2@example.com"} - presence, err := GetPresenceMulti(c, jids, "") - if err != nil { - t.Fatalf("GetPresenceMulti: %v", err) - } - want := []string{"", "away"} - if !reflect.DeepEqual(presence, want) { - t.Errorf("GetPresenceMulti: got %v, want %v", presence, want) - } -} - -func TestGetPresenceMultiFromJID(t *testing.T) { - c := aetesting.FakeSingleContext(t, "xmpp", "BulkGetPresence", func(in *pb.BulkPresenceRequest, out *pb.BulkPresenceResponse) error { - if !reflect.DeepEqual(in.Jid, []string{"user@example.com", "user2@example.com"}) { - return fmt.Errorf("bad request jids %#v", in.Jid) - } - if jid := in.GetFromJid(); jid != "bot@appspot.com" { - return fmt.Errorf("bad from jid %q", jid) - } - out.PresenceResponse = []*pb.PresenceResponse{ - newPresenceResponse(true, pb.PresenceResponse_NORMAL, true), - newPresenceResponse(true, pb.PresenceResponse_CHAT, true), - } - return nil - }) - - jids := []string{"user@example.com", "user2@example.com"} - presence, err := GetPresenceMulti(c, jids, "bot@appspot.com") - if err != nil { - t.Fatalf("GetPresenceMulti: %v", err) - } - want := []string{"", "chat"} - if !reflect.DeepEqual(presence, want) { - t.Errorf("GetPresenceMulti: got %v, want %v", presence, want) - } -} - -func TestGetPresenceMultiInvalid(t *testing.T) { - c := aetesting.FakeSingleContext(t, "xmpp", "BulkGetPresence", func(in *pb.BulkPresenceRequest, out *pb.BulkPresenceResponse) error { - if !reflect.DeepEqual(in.Jid, []string{"user@example.com", "user2@example.com"}) { - return fmt.Errorf("bad request jids %#v", in.Jid) - } - out.PresenceResponse = []*pb.PresenceResponse{ - newPresenceResponse(true, pb.PresenceResponse_EXTENDED_AWAY, true), - newPresenceResponse(true, pb.PresenceResponse_CHAT, false), - } - return nil - }) - - jids := []string{"user@example.com", "user2@example.com"} - presence, err := GetPresenceMulti(c, jids, "") - - wantErr := appengine.MultiError{nil, ErrInvalidJID} - if !reflect.DeepEqual(err, wantErr) { - t.Fatalf("GetPresenceMulti: got %#v, want %#v", err, wantErr) - } - - want := []string{"xa", ""} - if !reflect.DeepEqual(presence, want) { - t.Errorf("GetPresenceMulti: got %#v, want %#v", presence, want) - } -} - -func TestGetPresenceMultiUnavailable(t *testing.T) { - c := aetesting.FakeSingleContext(t, "xmpp", "BulkGetPresence", func(in *pb.BulkPresenceRequest, out *pb.BulkPresenceResponse) error { - if !reflect.DeepEqual(in.Jid, []string{"user@example.com", "user2@example.com"}) { - return fmt.Errorf("bad request jids %#v", in.Jid) - } - out.PresenceResponse = []*pb.PresenceResponse{ - newPresenceResponse(false, pb.PresenceResponse_AWAY, true), - newPresenceResponse(false, pb.PresenceResponse_DO_NOT_DISTURB, true), - } - return nil - }) - - jids := []string{"user@example.com", "user2@example.com"} - presence, err := GetPresenceMulti(c, jids, "") - - wantErr := appengine.MultiError{ - ErrPresenceUnavailable, - ErrPresenceUnavailable, - } - if !reflect.DeepEqual(err, wantErr) { - t.Fatalf("GetPresenceMulti: got %#v, want %#v", err, wantErr) - } - want := []string{"", ""} - if !reflect.DeepEqual(presence, want) { - t.Errorf("GetPresenceMulti: got %#v, want %#v", presence, want) - } -} diff --git a/pkg/kubelet/cadvisor/cadvisor_linux.go b/pkg/kubelet/cadvisor/cadvisor_linux.go index 34195dee767..5f253e92b71 100644 --- a/pkg/kubelet/cadvisor/cadvisor_linux.go +++ b/pkg/kubelet/cadvisor/cadvisor_linux.go @@ -25,13 +25,13 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/util" "github.com/golang/glog" + "github.com/google/cadvisor/cache/memory" "github.com/google/cadvisor/events" cadvisorFs "github.com/google/cadvisor/fs" cadvisorHttp "github.com/google/cadvisor/http" cadvisorApi "github.com/google/cadvisor/info/v1" cadvisorApiV2 "github.com/google/cadvisor/info/v2" "github.com/google/cadvisor/manager" - "github.com/google/cadvisor/storage/memory" "github.com/google/cadvisor/utils/sysfs" )