├── .gitignore ├── .probetests ├── .swift_func_excludes ├── .travis.yml ├── LICENSE ├── Makefile ├── README.md ├── accountserver ├── engine.go ├── engine_test.go ├── incoming_rep.go ├── incoming_rep_test.go ├── priorityrep.go ├── replicator.go ├── replicator_test.go ├── schema.go ├── server.go ├── server_test.go ├── sqlite_backend.go └── sqlite_backend_test.go ├── aio └── etc │ └── hummingbird │ └── andrewd-server.conf ├── bench ├── cbench.go ├── dbench.go └── main.go ├── client ├── client.go ├── debug.go ├── directclient.go ├── directclient_test.go ├── nodeiter.go ├── nodeiter_test.go ├── objclient.go ├── proxyclient.go └── tracingclient.go ├── cmd └── hummingbird │ ├── init.go │ ├── main.go │ └── systemd.go ├── common ├── client.go ├── conf │ ├── conf.go │ ├── conf_test.go │ ├── policy.go │ ├── policy_test.go │ └── syncrealm.go ├── constraints.go ├── constraints_test.go ├── expects.go ├── expects_test.go ├── freepool.go ├── fs │ ├── atomic_generic.go │ ├── atomic_linux.go │ ├── main.go │ ├── main_test.go │ ├── tempfile_test.go │ ├── xattr.go │ ├── xattr_bsd.go │ ├── xattr_darwinlinux.go │ └── xattr_test.go ├── multipart.go ├── multipart_test.go ├── pickle │ ├── pickle.go │ ├── pickle_test.go │ ├── unmarshal.go │ ├── unmarshal_test.go │ └── unpickle.go ├── ports.go ├── ring │ ├── builder.go │ ├── memcachering.go │ ├── memcachering_test.go │ ├── ring.go │ └── ring_test.go ├── srv │ ├── context.go │ ├── router.go │ ├── router_test.go │ └── server.go ├── swiftobject.go ├── swiftobject_test.go ├── test │ └── test.go ├── testutils.go ├── tracing │ ├── init.go │ ├── log.go │ └── util.go ├── utils.go ├── utils_test.go └── version.go ├── containerserver ├── engine.go ├── engine_test.go ├── incoming_rep.go ├── incoming_rep_test.go ├── lib_test.go ├── priorityrep.go ├── replicator.go ├── replicator_test.go ├── schema.go ├── schema_test.go ├── server.go ├── server_test.go ├── sqlite_backend.go ├── sqlite_backend_test.go ├── update.go └── update_test.go ├── docs ├── HAIO.md ├── README.md ├── admin │ ├── async.md │ ├── debug-single.md │ ├── dispersion.md │ ├── drivestatus.md │ ├── monitoring.md │ ├── progress.md │ ├── quarantine.md │ ├── replication-tools.md │ ├── replicationduration.md │ ├── replicationstats.md │ ├── ringmd5.md │ ├── rings.md │ ├── stalledreplicators.md │ ├── timesync.md │ └── tuning.md ├── arch │ └── hummingbird_architecture.png ├── deployment.md ├── dev │ ├── clisdk.md │ ├── tempest.md │ └── tls.md └── metrics.md ├── functional ├── Makefile ├── bulkdelete_test.go ├── bulkput_test.go └── functional.go ├── middleware ├── dbgheader.go ├── grep.go ├── grep_test.go ├── metrics.go ├── options.go ├── recon.go ├── recon_test.go ├── recover.go ├── ring.go ├── testdata │ └── quarantineDetail │ │ └── sdb4 │ │ └── quarantined │ │ ├── accounts │ │ ├── 52f9146296db1c31308103a83a7667ed-8848222 │ │ │ └── 52f9146296db1c31308103a83a7667ed.db │ │ └── a2d288042a86975c5e000e0e4b8d5a2b-12343444 │ │ │ ├── a2d288042a86975c5e000e0e4b8d5a2b.db │ │ │ └── a2d288042a86975c5e000e0e4b8d5a2b.db.pending │ │ ├── containers │ │ ├── 330db13d1978d2eaca43612c433bb1be-234234234 │ │ │ └── 330db13d1978d2eaca43612c433bb1be.db │ │ └── ff2d04f90fe4099ce8ecc514bbf514b2-413332114 │ │ │ └── ff2d04f90fe4099ce8ecc514bbf514b2.db │ │ └── objects │ │ ├── 197ce7d697904ffaada1a16ee3f7a8c0-8585858 │ │ └── 1515697139.24261.data │ │ └── a4f4d624d9a18c20addf439bcb7192e8-2399494 │ │ └── 1515696917.18895.data ├── tracing.go └── validaterequest.go ├── objectserver ├── auditor.go ├── auditor_test.go ├── doc.go ├── ecengine.go ├── ecengine_test.go ├── ecobj.go ├── ecobj_test.go ├── ecutils.go ├── ecutils_test.go ├── indexdb.go ├── indexdb_test.go ├── main.go ├── main_test.go ├── metadata.go ├── nurserystabilizer.go ├── objengine.go ├── objengine_test.go ├── priorityrep.go ├── priorityrep_test.go ├── repconn.go ├── replicator.go ├── replicator_test.go ├── repobj.go ├── repobj_test.go ├── repobjeng.go ├── repsrv.go ├── swiftbackend.go ├── swiftbackend_test.go ├── swiftobjeng.go ├── swiftobjeng_test.go ├── update.go ├── update_test.go ├── updater.go └── updater_test.go ├── probe ├── auditor_test.go ├── base.go ├── combo_test.go ├── policy_test.go └── replicator_test.go ├── proxyserver ├── accounthandlers.go ├── containerhandlers.go ├── containerhandlers_test.go ├── endpoints.go ├── endpoints_test.go ├── main.go ├── middleware │ ├── account_quota.go │ ├── account_quota_test.go │ ├── acl.go │ ├── acl_test.go │ ├── authtoken.go │ ├── authtoken_test.go │ ├── bulk.go │ ├── bulk_test.go │ ├── catcherror.go │ ├── container_quota.go │ ├── container_quota_test.go │ ├── context.go │ ├── copy.go │ ├── copy_test.go │ ├── cors.go │ ├── cors_test.go │ ├── crossdomain.go │ ├── crossdomain_test.go │ ├── formpost.go │ ├── formpost_test.go │ ├── healthcheck.go │ ├── keystoneauth.go │ ├── largeobject.go │ ├── largeobject_test.go │ ├── logging.go │ ├── multirange.go │ ├── multirange_test.go │ ├── pipe_response.go │ ├── pipe_response_test.go │ ├── ratelimit.go │ ├── ratelimit_test.go │ ├── s3api.go │ ├── s3api_test.go │ ├── s3auth.go │ ├── staticweb.go │ ├── staticweb_test.go │ ├── tempauth.go │ ├── tempauth_test.go │ ├── tempurl.go │ ├── tempurl_test.go │ ├── versioned_writes.go │ └── versioned_writes_test.go └── objhandlers.go ├── tools ├── db.go ├── db_test.go ├── dispersion.go ├── dispersion_test.go ├── dispersionpopulatecontainers.go ├── dispersionpopulateobjects.go ├── dispersionpopulateobjects_test.go ├── dispersionscancontainers.go ├── dispersionscanobjects.go ├── main.go ├── main_test.go ├── progress.go ├── quarantinehistory.go ├── quarantinerepair.go ├── reconcli.go ├── reconcli_test.go ├── replication.go ├── ring.go ├── ringmonitor.go ├── ringscan.go └── unmountedmonitor.go └── vendor └── github.com ├── apache └── thrift │ ├── .clang-format │ ├── .dockerignore │ ├── .editorconfig │ ├── .gitattributes │ ├── .gitignore │ ├── .travis.yml │ ├── .vendored.git │ ├── HEAD │ ├── config │ ├── description │ ├── hooks │ │ ├── applypatch-msg.sample │ │ ├── commit-msg.sample │ │ ├── post-update.sample │ │ ├── pre-applypatch.sample │ │ ├── pre-commit.sample │ │ ├── pre-push.sample │ │ ├── pre-rebase.sample │ │ ├── prepare-commit-msg.sample │ │ └── update.sample │ ├── index │ ├── info │ │ └── exclude │ ├── logs │ │ ├── HEAD │ │ └── refs │ │ │ └── heads │ │ │ └── 0.10.0 │ ├── objects │ │ └── pack │ │ │ ├── pack-38797ca9f840e5d19c354341c181c959a62dae7b.idx │ │ │ └── pack-38797ca9f840e5d19c354341c181c959a62dae7b.pack │ ├── packed-refs │ ├── refs │ │ └── heads │ │ │ └── 0.10.0 │ └── shallow │ └── lib │ └── go │ ├── Makefile.am │ ├── README.md │ ├── coding_standards.md │ ├── test │ ├── BinaryKeyTest.thrift │ ├── DontExportRWTest.thrift │ ├── ErrorTest.thrift │ ├── GoTagTest.thrift │ ├── IgnoreInitialismsTest.thrift │ ├── IncludesTest.thrift │ ├── InitialismsTest.thrift │ ├── Makefile.am │ ├── MultiplexedProtocolTest.thrift │ ├── NamesTest.thrift │ ├── NamespacedTest.thrift │ ├── OnewayTest.thrift │ ├── OptionalFieldsTest.thrift │ ├── RefAnnotationFieldsTest.thrift │ ├── ServicesTest.thrift │ ├── TypedefFieldTest.thrift │ ├── UnionDefaultValueTest.thrift │ ├── dontexportrwtest │ │ └── compile_test.go │ └── tests │ │ ├── binary_key_test.go │ │ ├── client_error_test.go │ │ ├── encoding_json_test.go │ │ ├── gotag_test.go │ │ ├── ignoreinitialisms_test.go │ │ ├── initialisms_test.go │ │ ├── multiplexed_protocol_test.go │ │ ├── names_test.go │ │ ├── one_way_test.go │ │ ├── optional_fields_test.go │ │ ├── protocol_mock.go │ │ ├── protocols_test.go │ │ ├── required_fields_test.go │ │ ├── struct_args_rets_test.go │ │ ├── thrifttest_driver.go │ │ ├── thrifttest_handler.go │ │ └── union_default_value_test.go │ └── thrift │ ├── application_exception.go │ ├── application_exception_test.go │ ├── binary_protocol.go │ ├── binary_protocol_test.go │ ├── buffered_transport.go │ ├── buffered_transport_test.go │ ├── compact_protocol.go │ ├── compact_protocol_test.go │ ├── debug_protocol.go │ ├── deserializer.go │ ├── exception.go │ ├── exception_test.go │ ├── field.go │ ├── framed_transport.go │ ├── framed_transport_test.go │ ├── http_client.go │ ├── http_client_test.go │ ├── http_transport.go │ ├── iostream_transport.go │ ├── iostream_transport_test.go │ ├── json_protocol.go │ ├── json_protocol_test.go │ ├── lowlevel_benchmarks_test.go │ ├── memory_buffer.go │ ├── memory_buffer_test.go │ ├── messagetype.go │ ├── multiplexed_protocol.go │ ├── numeric.go │ ├── pointerize.go │ ├── processor.go │ ├── processor_factory.go │ ├── protocol.go │ ├── protocol_exception.go │ ├── protocol_factory.go │ ├── protocol_test.go │ ├── rich_transport.go │ ├── rich_transport_test.go │ ├── serializer.go │ ├── serializer_test.go │ ├── serializer_types_test.go │ ├── server.go │ ├── server_socket.go │ ├── server_socket_test.go │ ├── server_test.go │ ├── server_transport.go │ ├── simple_json_protocol.go │ ├── simple_json_protocol_test.go │ ├── simple_server.go │ ├── socket.go │ ├── ssl_server_socket.go │ ├── ssl_socket.go │ ├── transport.go │ ├── transport_exception.go │ ├── transport_exception_test.go │ ├── transport_factory.go │ ├── transport_test.go │ ├── type.go │ ├── zlib_transport.go │ └── zlib_transport_test.go ├── mattn └── go-sqlite3 │ ├── .gitignore │ ├── .travis.yml │ ├── COMMIT_HUMMINGBIRD_IS_ON │ ├── LICENSE │ ├── README.md │ ├── _example │ ├── custom_func │ │ └── main.go │ ├── hook │ │ └── hook.go │ ├── limit │ │ └── limit.go │ ├── mod_regexp │ │ ├── Makefile │ │ ├── extension.go │ │ └── sqlite3_mod_regexp.c │ ├── mod_vtable │ │ ├── Makefile │ │ ├── extension.go │ │ ├── picojson.h │ │ └── sqlite3_mod_vtable.cc │ ├── simple │ │ └── simple.go │ ├── trace │ │ └── main.go │ └── vtable │ │ ├── main.go │ │ └── vtable.go │ ├── backup.go │ ├── backup_test.go │ ├── callback.go │ ├── callback_test.go │ ├── doc.go │ ├── error.go │ ├── error_test.go │ ├── sqlite3-binding.c │ ├── sqlite3-binding.h │ ├── sqlite3.go │ ├── sqlite3_context.go │ ├── sqlite3_fts3_test.go │ ├── sqlite3_fts5.go │ ├── sqlite3_go18.go │ ├── sqlite3_go18_test.go │ ├── sqlite3_icu.go │ ├── sqlite3_json1.go │ ├── sqlite3_libsqlite3.go │ ├── sqlite3_load_extension.go │ ├── sqlite3_omit_load_extension.go │ ├── sqlite3_other.go │ ├── sqlite3_solaris.go │ ├── sqlite3_test.go │ ├── sqlite3_trace.go │ ├── sqlite3_type.go │ ├── sqlite3_vtable.go │ ├── sqlite3_vtable_test.go │ ├── sqlite3_windows.go │ ├── sqlite3ext.h │ ├── static_mock.go │ └── tool │ └── upgrade.go ├── prometheus └── client_golang │ ├── .gitignore │ ├── .travis.yml │ ├── .vendored.git │ ├── HEAD │ ├── config │ ├── description │ ├── hooks │ │ ├── applypatch-msg.sample │ │ ├── commit-msg.sample │ │ ├── post-update.sample │ │ ├── pre-applypatch.sample │ │ ├── pre-commit.sample │ │ ├── pre-push.sample │ │ ├── pre-rebase.sample │ │ ├── prepare-commit-msg.sample │ │ └── update.sample │ ├── index │ ├── info │ │ └── exclude │ ├── logs │ │ ├── HEAD │ │ └── refs │ │ │ ├── heads │ │ │ └── master │ │ │ └── remotes │ │ │ └── origin │ │ │ └── HEAD │ ├── objects │ │ └── pack │ │ │ ├── pack-f045c85c054aef5c8695262b0d1b9ad8e1ac3411.idx │ │ │ └── pack-f045c85c054aef5c8695262b0d1b9ad8e1ac3411.pack │ ├── packed-refs │ └── refs │ │ ├── heads │ │ └── master │ │ └── remotes │ │ └── origin │ │ └── HEAD │ ├── AUTHORS.md │ ├── CHANGELOG.md │ ├── CONTRIBUTING.md │ ├── LICENSE │ ├── NOTICE │ ├── README.md │ ├── VERSION │ ├── api │ └── prometheus │ │ ├── api.go │ │ └── api_test.go │ ├── examples │ ├── random │ │ └── main.go │ └── simple │ │ └── main.go │ └── prometheus │ ├── .gitignore │ ├── README.md │ ├── benchmark_test.go │ ├── collector.go │ ├── counter.go │ ├── counter_test.go │ ├── desc.go │ ├── doc.go │ ├── example_clustermanager_test.go │ ├── examples_test.go │ ├── expvar_collector.go │ ├── expvar_collector_test.go │ ├── fnv.go │ ├── gauge.go │ ├── gauge_test.go │ ├── go_collector.go │ ├── go_collector_test.go │ ├── histogram.go │ ├── histogram_test.go │ ├── http.go │ ├── http_test.go │ ├── metric.go │ ├── metric_test.go │ ├── process_collector.go │ ├── process_collector_test.go │ ├── promhttp │ ├── http.go │ └── http_test.go │ ├── push │ ├── examples_test.go │ ├── push.go │ └── push_test.go │ ├── registry.go │ ├── registry_test.go │ ├── summary.go │ ├── summary_test.go │ ├── untyped.go │ ├── value.go │ ├── vec.go │ └── vec_test.go ├── uber-go └── tally │ ├── .gitignore │ ├── .travis.yml │ ├── .vendored.git │ ├── HEAD │ ├── config │ ├── description │ ├── hooks │ │ ├── applypatch-msg.sample │ │ ├── commit-msg.sample │ │ ├── post-update.sample │ │ ├── pre-applypatch.sample │ │ ├── pre-commit.sample │ │ ├── pre-push.sample │ │ ├── pre-rebase.sample │ │ ├── prepare-commit-msg.sample │ │ └── update.sample │ ├── index │ ├── info │ │ └── exclude │ ├── logs │ │ ├── HEAD │ │ └── refs │ │ │ ├── heads │ │ │ └── master │ │ │ └── remotes │ │ │ └── origin │ │ │ └── HEAD │ ├── objects │ │ └── pack │ │ │ ├── pack-280463e4ee94516578ab93bbdad7bcbb4c9a7811.idx │ │ │ └── pack-280463e4ee94516578ab93bbdad7bcbb4c9a7811.pack │ ├── packed-refs │ └── refs │ │ ├── heads │ │ └── master │ │ └── remotes │ │ └── origin │ │ └── HEAD │ ├── LICENSE │ ├── Makefile │ ├── README.md │ ├── check_license.sh │ ├── example │ ├── README.md │ └── main.go │ ├── glide.lock │ ├── glide.yaml │ ├── histogram.go │ ├── histogram_test.go │ ├── key_gen.go │ ├── m3 │ ├── config.go │ ├── config_test.go │ ├── customtransports │ │ ├── buffered_read_transport.go │ │ ├── buffered_read_transport_test.go │ │ ├── m3_calc_transport.go │ │ └── m3_calc_transport_test.go │ ├── example │ │ ├── README.md │ │ ├── config.yaml │ │ ├── local_server.go │ │ └── m3_main.go │ ├── reporter.go │ ├── reporter_benchmark_test.go │ ├── reporter_test.go │ ├── resource_pool.go │ ├── resource_pool_test.go │ ├── scope_test.go │ ├── thrift │ │ ├── Makefile │ │ ├── constants.go │ │ ├── m3.go │ │ ├── ttypes.go │ │ └── v1.0.0 │ │ │ └── m3.thrift │ └── thriftudp │ │ ├── multitransport.go │ │ ├── multitransport_test.go │ │ ├── transport.go │ │ └── transport_test.go │ ├── multi │ ├── README.md │ ├── reporter.go │ └── reporter_test.go │ ├── pool.go │ ├── prometheus │ ├── README.md │ ├── example │ │ ├── README.md │ │ └── prometheus_main.go │ ├── reporter.go │ └── reporter_test.go │ ├── reporter.go │ ├── scope.go │ ├── scope_benchmark_test.go │ ├── scope_test.go │ ├── stats.go │ ├── stats_benchmark_test.go │ ├── stats_test.go │ ├── statsd │ ├── README.md │ ├── example │ │ ├── README.md │ │ └── statsd_main.go │ ├── reporter.go │ └── reporter_test.go │ └── types.go └── uber ├── jaeger-client-go ├── .gitignore ├── .gitmodules ├── .travis.yml ├── .vendored.git │ ├── HEAD │ ├── config │ ├── description │ ├── hooks │ │ ├── applypatch-msg.sample │ │ ├── commit-msg.sample │ │ ├── post-update.sample │ │ ├── pre-applypatch.sample │ │ ├── pre-commit.sample │ │ ├── pre-push.sample │ │ ├── pre-rebase.sample │ │ ├── prepare-commit-msg.sample │ │ └── update.sample │ ├── index │ ├── info │ │ └── exclude │ ├── logs │ │ └── HEAD │ ├── objects │ │ └── pack │ │ │ ├── pack-163cd7bc013b67c99fd907f0d0ce19bc18cea177.idx │ │ │ └── pack-163cd7bc013b67c99fd907f0d0ce19bc18cea177.pack │ ├── packed-refs │ └── shallow ├── CHANGELOG.md ├── CONTRIBUTING.md ├── DCO ├── Gopkg.lock ├── Gopkg.toml ├── LICENSE ├── Makefile ├── README.md ├── RELEASE.md ├── baggage_setter.go ├── baggage_setter_test.go ├── config │ ├── config.go │ ├── config_env.go │ ├── config_test.go │ ├── example_test.go │ ├── options.go │ └── options_test.go ├── constants.go ├── constants_test.go ├── context.go ├── context_test.go ├── contrib_observer.go ├── crossdock │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── client │ │ ├── client.go │ │ ├── client_test.go │ │ ├── constants.go │ │ └── trace.go │ ├── common │ │ ├── constants.go │ │ └── json.go │ ├── docker-compose.yml │ ├── endtoend │ │ ├── handler.go │ │ └── handler_test.go │ ├── log │ │ └── logger.go │ ├── main.go │ ├── rules.mk │ ├── server │ │ ├── constants.go │ │ ├── server.go │ │ ├── server_test.go │ │ ├── tchannel.go │ │ └── trace.go │ └── thrift │ │ ├── .nocover │ │ └── tracetest │ │ ├── constants.go │ │ ├── tchan-tracetest.go │ │ ├── tracedservice.go │ │ └── ttypes.go ├── doc.go ├── glide.lock ├── glide.yaml ├── header.go ├── header_test.go ├── internal │ ├── baggage │ │ ├── remote │ │ │ ├── options.go │ │ │ ├── restriction_manager.go │ │ │ └── restriction_manager_test.go │ │ ├── restriction_manager.go │ │ └── restriction_manager_test.go │ ├── spanlog │ │ └── json.go │ └── throttler │ │ ├── remote │ │ ├── options.go │ │ ├── options_test.go │ │ ├── throttler.go │ │ └── throttler_test.go │ │ ├── throttler.go │ │ └── throttler_test.go ├── interop.go ├── jaeger_tag.go ├── jaeger_thrift_span.go ├── jaeger_thrift_span_test.go ├── log │ ├── logger.go │ ├── logger_test.go │ └── zap │ │ ├── field.go │ │ ├── field_test.go │ │ ├── logger.go │ │ └── logger_test.go ├── logger.go ├── logger_test.go ├── metrics.go ├── metrics │ └── prometheus │ │ └── metrics_test.go ├── metrics_test.go ├── observer.go ├── observer_test.go ├── process.go ├── propagation.go ├── propagation_test.go ├── reference.go ├── reporter.go ├── reporter_options.go ├── reporter_test.go ├── rpcmetrics │ ├── README.md │ ├── doc.go │ ├── endpoints.go │ ├── endpoints_test.go │ ├── metrics.go │ ├── metrics_test.go │ ├── normalizer.go │ ├── normalizer_test.go │ ├── observer.go │ └── observer_test.go ├── sampler.go ├── sampler_options.go ├── sampler_test.go ├── scripts │ ├── cover.sh │ ├── updateLicense.py │ └── updateLicenses.sh ├── span.go ├── span_test.go ├── testutils │ ├── mock_agent.go │ ├── mock_agent_test.go │ ├── sampling_manager.go │ ├── udp_transport.go │ └── udp_transport_test.go ├── thrift-gen │ ├── agent │ │ ├── agent.go │ │ ├── constants.go │ │ └── ttypes.go │ ├── baggage │ │ ├── baggagerestrictionmanager.go │ │ ├── constants.go │ │ └── ttypes.go │ ├── jaeger │ │ ├── agent.go │ │ ├── constants.go │ │ └── ttypes.go │ ├── sampling │ │ ├── constants.go │ │ ├── samplingmanager.go │ │ └── ttypes.go │ └── zipkincore │ │ ├── constants.go │ │ ├── ttypes.go │ │ └── zipkincollector.go ├── thrift │ └── .nocover ├── tracer.go ├── tracer_options.go ├── tracer_test.go ├── transport.go ├── transport │ ├── doc.go │ ├── http.go │ ├── http_test.go │ └── zipkin │ │ ├── doc.go │ │ ├── example_test.go │ │ ├── http.go │ │ └── http_test.go ├── transport_udp.go ├── transport_udp_test.go ├── travis │ ├── build-crossdock.sh │ └── install-crossdock-deps.sh ├── utils │ ├── http_json.go │ ├── http_json_test.go │ ├── localip.go │ ├── rand.go │ ├── rate_limiter.go │ ├── rate_limiter_test.go │ ├── udp_client.go │ ├── utils.go │ └── utils_test.go ├── zipkin.go ├── zipkin │ ├── README.md │ ├── doc.go │ ├── propagation.go │ └── propagation_test.go ├── zipkin_test.go ├── zipkin_thrift_span.go └── zipkin_thrift_span_test.go └── jaeger-lib ├── .gitignore ├── .travis.yml ├── .vendored.git ├── HEAD ├── config ├── description ├── hooks │ ├── applypatch-msg.sample │ ├── commit-msg.sample │ ├── post-update.sample │ ├── pre-applypatch.sample │ ├── pre-commit.sample │ ├── pre-push.sample │ ├── pre-rebase.sample │ ├── prepare-commit-msg.sample │ └── update.sample ├── index ├── info │ └── exclude ├── logs │ └── HEAD ├── objects │ ├── 11 │ │ └── 4f092ef5b50637dd8415e48cfb8bf47ad1abe2 │ ├── 16 │ │ ├── 00e7905db437090bf6e08784454bd023c48e9f │ │ └── a435914cdc13bbd7aa11621137fe67908be724 │ ├── 19 │ │ ├── 326b06a9aee11b06cea7893f439f548b6d1c32 │ │ ├── 85c92960cf8268182812daf7532afc7e34455a │ │ └── 9eb8a035c9975f053f5751a26454af4bf248d0 │ ├── 20 │ │ └── 74752ac0374eac88b245c23dd9b1771d4f20a5 │ ├── 23 │ │ ├── 189e694cd72ad25c78cbef7a18bfcaad40b91a │ │ └── ea072fcb7f90d6d6b89f946ededd0265f9b665 │ ├── 24 │ │ └── ecb7335a32da6dd75645152c1f159edf96b49b │ ├── 26 │ │ └── 1eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 │ ├── 28 │ │ └── f41b1c82326f94fdb11ab781420b2affd64b72 │ ├── 30 │ │ └── a0d594c6a87fb9271471830343ca48f5c2f1ba │ ├── 38 │ │ └── 704f369dde19ac7b29fdbf485e95181f874b3b │ ├── 39 │ │ └── 74d38c71868ea0abb8a017e82a41864ecf2036 │ ├── 40 │ │ └── 791ebb7082197b2bd096c4316d1680765c870d │ ├── 42 │ │ └── 67858c0679cd4e47cefed8d7f70fd386cfb567 │ ├── 61 │ │ └── d05f6ec700690540f29853ab6d47049268ccb5 │ ├── 64 │ │ └── e1b799057cc9aac6bb3306cac968bbe2ed15fd │ ├── 65 │ │ └── 03a6f597ab4102c8cf79ce239c5f2a83e21f77 │ ├── 66 │ │ └── 134b6ccec4784cb50c6e59f915c25daac47f02 │ ├── 73 │ │ └── b957b666c631010ad4c688515ce31e3b2561d2 │ ├── 77 │ │ └── c1aef4e03168b44d366d46d553a0754cf5ce26 │ ├── 79 │ │ └── 2377295a177e8136a13f90fbfb9c7cb2c1075c │ ├── 91 │ │ └── 91acbea1b85a2f789879d6c426d6b5b32ff9c3 │ ├── 95 │ │ └── be7d6cd940f0fe47b5dcd0daa0662004dba69e │ ├── 97 │ │ └── 8c3e9ea26682d4ed2dc1cdd30d36b7044f091a │ ├── 06 │ │ └── 8953d4bd988db39cd869b35f662b80bcb21305 │ ├── 0b │ │ └── 97707b075eba3c799c953955d15276d030823a │ ├── 1b │ │ └── 8db97584862c1ba8c6cc1befff5a00b2fe9196 │ ├── 1d │ │ └── 5ad801d568f072826bd1b84f78ed35a3a05d68 │ ├── 1e │ │ └── 0e51e973a4787e317fb8ad75cd4b62deb5a0aa │ ├── 2a │ │ └── 6a43efdb458629465bbf1fbf6b7b300c466b31 │ ├── 3b │ │ └── 55b8ba5629a70ca6ba8af31678fd0597353839 │ ├── 3c │ │ └── 606391a095089cbf3007a5b3de339524cc0d58 │ ├── 3e │ │ └── f80ffa8417454c650c8831426104d707b34889 │ ├── 4a │ │ └── 8abdb539f90abf1b29821c71cb6253bfe163b0 │ ├── 5b │ │ └── 6722c42599116b8a64ef5ba7521367601598fa │ ├── 6a │ │ └── acfd297d80989e1eb1981c7c72d588b5610639 │ ├── 6f │ │ ├── 2bf2e39035c09780e45b61d9014fe300e45c6d │ │ └── 90f33703863e05d11a6a4fe86f615cd58a9a4a │ ├── 7d │ │ ├── 9226c6645945b59bf20ee399511643e7fe5552 │ │ └── 9b511618bc7bf1ccb12ed578631b2c9b81e9f7 │ ├── 8c │ │ └── 3624849cc688b6ab9da1930dba5bf88fd3724d │ ├── 8f │ │ └── a7daa05f19a5df4c1a92d6e3ece648fed8f1b1 │ ├── 9c │ │ └── c72383320f876d31dc48efe78f55c441a28b7c │ ├── 9e │ │ └── bd24e89b123250fb01106cadeecb5bfc5e734d │ ├── 9f │ │ └── c7aba2953bd6807b7881590d57a553e193f9b4 │ ├── a0 │ │ └── 75afb425747c7bccf082c7f4bb796cacbed8e8 │ ├── a1 │ │ └── 3f8f08248d21ed0fd677bfefb8c6ad1abebf2b │ ├── a3 │ │ └── 93b0a202d80473e8ae07e1e6cfb993dbdbde43 │ ├── a7 │ │ └── 44a890df3d7a2862010287d1ca46ad4fc18d1f │ ├── b0 │ │ └── dcc013451298f89345b860a1948c3de0f26ba2 │ ├── b3 │ │ └── 79dfabbb3984b49975fcfea64eff22d18f38f5 │ ├── b6 │ │ └── 2c08af62cfaa848f6b23a9414b39b96f0f816c │ ├── b9 │ │ └── 7e1e39958ee4e3ca554996ffc73c9d32ed9ee0 │ ├── bc │ │ └── 2e137ccc9936953ac8a16c25697faec6a1e18e │ ├── be │ │ └── 6b97dd8f829b8db214aac8895849d9b6c4576a │ ├── c3 │ │ └── 791b60b16fa4190d9d2b2ff8b3779cad1efca3 │ ├── c4 │ │ └── 2a7f0e8f369f8d54aef624166aad5140251610 │ ├── c5 │ │ └── 5e1d263a97b07678c9bc59a3c2a85f6c8ccd40 │ ├── c6 │ │ └── 797d24bdd7c3828d06da6f094754e495caa5e0 │ ├── c9 │ │ └── f8ec9a7e58149274a4a65637dcc03a99040467 │ ├── d1 │ │ └── 9c23c68f89ee6bde22a5adcf6b9d2b648f685e │ ├── d5 │ │ └── e7d0eed1b0448ef596c94252b005f3bb98a401 │ ├── d7 │ │ └── fc19ecb1d36945e33164e3dd94075805122770 │ ├── d9 │ │ └── 2493210688d2d47b057f1aa35fb56ed2e313bb │ ├── de │ │ ├── 86e2062e7eb599cffc4c7f730f785aac54f0b0 │ │ └── b525a45d31973d4cd2dafd77025fd64bc01b72 │ ├── e1 │ │ ├── 34d1de075f1047d01f8a555555bfcab86a0e0c │ │ ├── 6880f10132a3e973ef9e2eb112cdaa71839b02 │ │ └── 8d222abb4abb846a630afd69cfd268fcf0dff8 │ ├── f4 │ │ ├── dc71ca266a1bd5f763ab00e789bcf96ed241df │ │ └── dede6b09cfc99a3aa286df61b532f56503c69c │ ├── f8 │ │ └── 621c66f88c1aad14e6c24a37d94f36a58ca855 │ └── fb │ │ └── bbe20ac3b215835563a42380cc00fec6dab2dd ├── packed-refs └── shallow ├── CHANGELOG.md ├── CONTRIBUTING.md ├── DCO ├── Gopkg.lock ├── Gopkg.toml ├── LICENSE ├── Makefile ├── README.md ├── client └── log │ └── go-kit │ ├── logger.go │ └── logger_test.go ├── glide.lock ├── glide.yaml ├── metrics ├── adapters │ ├── cache.go │ ├── cache_test.go │ ├── factory.go │ ├── factory_test.go │ └── tagless.go ├── counter.go ├── expvar │ ├── factory.go │ └── factory_test.go ├── factory.go ├── gauge.go ├── go-kit │ ├── expvar │ │ ├── factory.go │ │ └── factory_test.go │ ├── factory.go │ ├── factory_test.go │ ├── influx │ │ ├── factory.go │ │ └── factory_test.go │ ├── metrics.go │ ├── metrics_test.go │ └── prometheus │ │ ├── factory.go │ │ └── factory_test.go ├── local.go ├── local_test.go ├── metrics.go ├── metrics_test.go ├── multi │ ├── multi.go │ └── multi_test.go ├── prometheus │ ├── cache.go │ ├── factory.go │ └── factory_test.go ├── stopwatch.go ├── tally │ ├── factory.go │ ├── factory_test.go │ └── metrics.go ├── testutils │ ├── testutils.go │ └── testutils_test.go └── timer.go ├── sample ├── sample.go └── sample_test.go ├── scripts ├── cover.sh ├── updateLicense.py └── updateLicenses.sh └── utils ├── rate_limiter.go └── rate_limiter_test.go /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac related files 2 | .DS_Store 3 | 4 | # Binaries for programs and plugins 5 | *.exe 6 | *.dll 7 | *.so 8 | *.dylib 9 | 10 | # Test binary, build with `go test -c` 11 | *.test 12 | 13 | # Output of the go coverage tool 14 | *.out 15 | 16 | # vim 17 | *.sw? 18 | 19 | #Hummingbird related build directory 20 | bin 21 | -------------------------------------------------------------------------------- /.probetests: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | HUMMINGBIRD=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 4 | cd ${HUMMINGBIRD} 5 | make 6 | ln -sf ${HUMMINGBIRD}/bin/hummingbird ${HUMMINGBIRD}/bin/swift-object-server 7 | PATH=${HUMMINGBIRD}/bin:$PATH 8 | cd $(python -c "import swift, os; print os.path.dirname(os.path.dirname(swift.__file__))")/test/probe 9 | nosetests --exe $@ 10 | exit $? 11 | 12 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | HUMMINGBIRD_VERSION?=$(shell git describe --tags) 2 | HUMMINGBIRD_VERSION_NO_V?=$(shell git describe --tags | cut -d v -f 2) 3 | 4 | all: bin/hummingbird 5 | 6 | .PHONY: bin/hummingbird 7 | 8 | bin/hummingbird: 9 | mkdir -p bin 10 | go build -o bin/hummingbird -ldflags "-X github.com/troubling/hummingbird/common.Version=$(HUMMINGBIRD_VERSION)" github.com/troubling/hummingbird/cmd/hummingbird 11 | 12 | get: 13 | go get -u -t $(shell go list ./... | grep -v /vendor/) 14 | 15 | fmt: 16 | gofmt -l -w -s $(shell find . -mindepth 1 -maxdepth 1 -type d -print | grep -v vendor) 17 | 18 | test: 19 | @test -z "$(shell find . -name '*.go' | grep -v ./vendor/ | xargs gofmt -l -s)" || (echo "You need to run 'make fmt'"; exit 1) 20 | go vet $(shell go list ./... | grep -v /vendor/) 21 | go test -cover $(shell go list ./... | grep -v /vendor/) 22 | 23 | functional-test: 24 | $(MAKE) -C functional 25 | 26 | clean: 27 | rm -rf bin 28 | 29 | haio: all 30 | if hash hball 2>/dev/null ; then hball stop ; fi 31 | sudo rm -f /usr/local/bin/hummingbird 32 | sudo cp bin/hummingbird /usr/local/bin/hummingbird 33 | sudo chmod 0755 /usr/local/bin/hummingbird 34 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Hummingbird 2 | =========== 3 | 4 | NOTE: Hummingbird is no longer under active development. 5 | 6 | Hummingbird is a scalable, performant distributed object storage system written in Go 7 | that is also a drop in replacement for [OpenStack Swift](http://swift.openstack.org) with minimal migration. 8 | The goal is to keep the same protocols and on-disk layout while dramatically 9 | improving performance. 10 | 11 | Documentation 12 | ------------- 13 | 14 | Development, deployment and administration documentation can be found [here](./docs/README.md) 15 | 16 | Performance 17 | ----------- 18 | 19 | The following tests were run on 5 nodes with 128GB of RAM, 10 960GB SSD, and 45 10T drives each and 10Gb networking. The systems were configured to use an EC scheme of 4 data and 2 parity shards. Each run was for 1,000,000 objects at 250 concurency through a single `nectar` client. 20 | 21 | ## 4 KB objects 22 | 23 | | 4 KB Results | Hummingbird | Ceph | Swift | 24 | |--------------|-------------|------|-------| 25 | | PUT/sec | 10395 | 3525 | 890 | 26 | | GET/sec | 16207 | 8576 | 4208 | 27 | | DELETE/sec | 9225 | 5440 | 656 | 28 | 29 | 30 | ## 1 MB objects 31 | 32 | | 1MB Results | Hummingbird | Ceph | Swift | 33 | |-------------|-------------|------|-------| 34 | | PUT/sec | 820 | 778 | 477 | 35 | | GET/sec | 818 | 619 | 602 | 36 | | DELETE/sec | 9434 | 6211 | 512 | 37 | -------------------------------------------------------------------------------- /accountserver/priorityrep.go: -------------------------------------------------------------------------------- 1 | package accountserver 2 | 3 | import ( 4 | "github.com/troubling/hummingbird/common" 5 | "github.com/troubling/hummingbird/common/ring" 6 | ) 7 | 8 | type PriorityRepJob struct { 9 | Partition uint64 `json:"partition"` 10 | FromDevice *ring.Device `json:"from_device"` 11 | ToDevice *ring.Device `json:"to_device"` 12 | } 13 | 14 | // TODO 15 | func SendPriRepJob(job *PriorityRepJob, client common.HTTPClient, userAgent string) (string, bool) { 16 | return "pretending to do priority replication; normal replication should be fast enough for now", true 17 | } 18 | -------------------------------------------------------------------------------- /aio/etc/hummingbird/andrewd-server.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | user = 3 | 4 | [andrewd] 5 | 6 | [drive_watch] 7 | sql_dir = /var/cache/swift/ 8 | run_frequency_sec = 300 9 | max_bad_drive_age_sec = 600 10 | ring_update_frequency_sec = 3600 11 | max_weight_change = .01 12 | -------------------------------------------------------------------------------- /client/debug.go: -------------------------------------------------------------------------------- 1 | package client 2 | 3 | import ( 4 | "fmt" 5 | "io" 6 | "net/http" 7 | "os" 8 | "time" 9 | ) 10 | 11 | type autoCloseResponses struct { 12 | http.RoundTripper 13 | } 14 | 15 | func (a *autoCloseResponses) RoundTrip(req *http.Request) (*http.Response, error) { 16 | resp, err := a.RoundTripper.RoundTrip(req) 17 | resp.Body = &autoClosingBody{ReadCloser: resp.Body, timer: time.AfterFunc(time.Minute, func() { autoCloseReport(req, resp) })} 18 | return resp, err 19 | } 20 | 21 | type autoClosingBody struct { 22 | io.ReadCloser 23 | timer *time.Timer 24 | } 25 | 26 | func (a *autoClosingBody) Close() error { 27 | a.timer.Stop() 28 | return a.ReadCloser.Close() 29 | } 30 | 31 | func autoCloseReport(req *http.Request, resp *http.Response) { 32 | fmt.Fprintf(os.Stderr, ` 33 | ################################################################################ 34 | # Auto Closing Response 35 | # Request: %s %#v %#v 36 | # Response: %d %#v 37 | ################################################################################ 38 | `, req.Method, req.URL, req.Header, resp.StatusCode, resp.Header) 39 | } 40 | -------------------------------------------------------------------------------- /common/client.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package common 17 | 18 | import "net/http" 19 | 20 | // HTTPClient is an interface implemented by net/http Client and client.TracingClient 21 | type HTTPClient interface { 22 | Do(req *http.Request) (res *http.Response, err error) 23 | } 24 | -------------------------------------------------------------------------------- /common/freepool.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package common 17 | 18 | import ( 19 | "sync/atomic" 20 | "unsafe" 21 | ) 22 | 23 | type FreePool []*unsafe.Pointer 24 | 25 | func (a FreePool) Get() interface{} { 26 | for _, p := range a { 27 | if v := atomic.SwapPointer(p, nil); v != nil { 28 | return *(*interface{})(v) 29 | } 30 | } 31 | return nil 32 | } 33 | 34 | func (a FreePool) Put(v interface{}) { 35 | vp := unsafe.Pointer(&v) 36 | for _, p := range a { 37 | if atomic.CompareAndSwapPointer(p, nil, vp) { 38 | return 39 | } 40 | } 41 | } 42 | 43 | func NewFreePool(size int) FreePool { 44 | a := make(FreePool, size) 45 | for i := range a { 46 | a[i] = new(unsafe.Pointer) 47 | } 48 | return a 49 | } 50 | -------------------------------------------------------------------------------- /common/ports.go: -------------------------------------------------------------------------------- 1 | package common 2 | 3 | const ( 4 | DefaultProxyServerPort = 8080 5 | DefaultAndrewdPort = 6003 6 | DefaultAccountServerPort = 6002 7 | DefaultAccountReplicatorPort = DefaultAccountServerPort + 500 8 | DefaultContainerServerPort = 6001 9 | DefaultContainerReplicatorPort = DefaultContainerServerPort + 500 10 | DefaultObjectServerPort = 6000 11 | DefaultObjectReplicatorPort = DefaultObjectServerPort + 500 12 | ) 13 | -------------------------------------------------------------------------------- /common/swiftobject_test.go: -------------------------------------------------------------------------------- 1 | package common 2 | 3 | import ( 4 | "io/ioutil" 5 | "os" 6 | "reflect" 7 | "strings" 8 | "testing" 9 | 10 | "github.com/stretchr/testify/assert" 11 | ) 12 | 13 | func TestWriteReadMetadata(t *testing.T) { 14 | 15 | data := map[string]string{ 16 | strings.Repeat("la", 5): strings.Repeat("la", 30), 17 | strings.Repeat("moo", 500): strings.Repeat("moo", 300), 18 | } 19 | testFile, err := ioutil.TempFile("/tmp", "backend_test") 20 | defer testFile.Close() 21 | defer os.Remove(testFile.Name()) 22 | assert.Equal(t, err, nil) 23 | SwiftObjectWriteMetadata(testFile.Fd(), data) 24 | checkData := map[string]string{ 25 | strings.Repeat("la", 5): strings.Repeat("la", 30), 26 | strings.Repeat("moo", 500): strings.Repeat("moo", 300), 27 | } 28 | readData, err := SwiftObjectReadMetadata(testFile.Name()) 29 | assert.Equal(t, err, nil) 30 | assert.True(t, reflect.DeepEqual(checkData, readData)) 31 | 32 | readData, err = SwiftObjectReadMetadata(testFile.Fd()) 33 | assert.Equal(t, err, nil) 34 | assert.True(t, reflect.DeepEqual(checkData, readData)) 35 | } 36 | -------------------------------------------------------------------------------- /common/tracing/log.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package tracing 17 | 18 | import ( 19 | "github.com/troubling/hummingbird/common/srv" 20 | "go.uber.org/zap" 21 | ) 22 | 23 | // TraceLogger is an adapter from LowLevelLogger to jaeger-lib Logger interface. 24 | type TraceLogger struct { 25 | logger *zap.SugaredLogger 26 | } 27 | 28 | // NewLogger creates a new Sugared Logger. 29 | func NewTraceLogger(logger srv.LowLevelLogger) *TraceLogger { 30 | return &TraceLogger{logger: logger.Sugar()} 31 | } 32 | 33 | // Error logs a message at error priority 34 | func (l *TraceLogger) Error(msg string) { 35 | l.logger.Error(msg) 36 | } 37 | 38 | // Infof logs a message at info priority 39 | func (l *TraceLogger) Infof(msg string, args ...interface{}) { 40 | l.logger.Infof(msg, args...) 41 | } 42 | -------------------------------------------------------------------------------- /common/tracing/util.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package tracing 17 | 18 | import ( 19 | "context" 20 | 21 | opentracing "github.com/opentracing/opentracing-go" 22 | ) 23 | 24 | func CopySpanFromContext(ctx context.Context) context.Context { 25 | newCtx := context.Background() 26 | span := opentracing.SpanFromContext(ctx) 27 | if span != nil { 28 | newCtx = opentracing.ContextWithSpan(newCtx, span) 29 | } 30 | return newCtx 31 | } 32 | -------------------------------------------------------------------------------- /common/version.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package common 17 | 18 | var Version = "0.1" 19 | -------------------------------------------------------------------------------- /containerserver/priorityrep.go: -------------------------------------------------------------------------------- 1 | package containerserver 2 | 3 | import ( 4 | "github.com/troubling/hummingbird/common" 5 | "github.com/troubling/hummingbird/common/ring" 6 | ) 7 | 8 | type PriorityRepJob struct { 9 | Partition uint64 `json:"partition"` 10 | FromDevice *ring.Device `json:"from_device"` 11 | ToDevice *ring.Device `json:"to_device"` 12 | } 13 | 14 | // TODO 15 | func SendPriRepJob(job *PriorityRepJob, client common.HTTPClient, userAgent string) (string, bool) { 16 | return "pretending to do priority replication; normal replication should be fast enough for now", true 17 | } 18 | -------------------------------------------------------------------------------- /docs/admin/async.md: -------------------------------------------------------------------------------- 1 | ## Async Pending Report 2 | 3 | The Async Pending Report shows how many updates are waiting to be sent to container servers from object servers. A burst of traffic can cause these updates to saved to disk to be resent later when the traffic isn't as high. These saved requests are known as Async Pendings. An ever increasing number of these indicate a cluster that is overwhelmed or possible failures that need to be addressed. 4 | 5 | Note that the JSON output will give counts for each server. This can be useful in tracking down an issue. If all servers are relatively equally backed up, this can indicate trouble with the container server layer. If just one server has nearly all the pending requests, it is probably an issue with that server, say, a flakey network interface or route. 6 | 7 | ``` 8 | $ hummingbird recon -a 9 | [2018-01-16 17:19:59] Async Pending Report 10 | [async_pending] low: 0, high: 0, avg: 0.0, total: 0, Failed: 0.0%, no_result: 0, reported: 4 11 | ``` 12 | 13 | ``` 14 | $ hummingbird recon -a -json 15 | { 16 | "Name": "Async Pending Report", 17 | "Time": "2018-01-16T17:20:09.460534783Z", 18 | "Pass": true, 19 | "Servers": 4, 20 | "Successes": 4, 21 | "Errors": null, 22 | "Stats": { 23 | "127.0.0.1:6010": 0, 24 | "127.0.0.1:6020": 0, 25 | "127.0.0.1:6030": 0, 26 | "127.0.0.1:6040": 0 27 | } 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /docs/admin/replicationduration.md: -------------------------------------------------------------------------------- 1 | ## Replication Duration Report 2 | 3 | The Replication Duration Report gives the average amount of time it takes to run a replication pass of each drive. The JSON output will give averages for each server whereas the plain text report just gives the overall average. If this duration starts dramatically increasing it can indicate an overloaded cluster. For a normal cluster, twice the high value should be used for the min-part-hours of the rings. 4 | 5 | ``` 6 | $ hummingbird recon -rd 7 | [2018-01-16 17:47:33] Replication Duration Report 8 | [replication_duration_secs] low: 10.606, high: 10.850, avg: 10.746, Failed: 0.0%, no_result: 0, reported: 4 9 | Number of drives not completed a pass: 0 10 | ``` 11 | 12 | ``` 13 | $ hummingbird recon -rd -json 14 | { 15 | "Name": "Replication Duration Report", 16 | "Time": "2018-01-16T17:47:35.645741121Z", 17 | "Pass": true, 18 | "Servers": 4, 19 | "Successes": 4, 20 | "Errors": null, 21 | "Stats": { 22 | "127.0.0.1:6010": 10.784847003, 23 | "127.0.0.1:6020": 10.742181572, 24 | "127.0.0.1:6030": 10.6057160435, 25 | "127.0.0.1:6040": 10.849519436 26 | }, 27 | "TotalDriveZero": 0 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /docs/admin/ringmd5.md: -------------------------------------------------------------------------------- 1 | ## MD5 Report 2 | 3 | The MD5 Report verifies that all of the servers having the same ring, the same general hummingbird.conf, and the same hummingbird executable. 4 | 5 | ``` 6 | $ hummingbird recon -md5 7 | [2018-01-16 17:36:21] Ring MD5 Report 8 | 4/4 hosts matched, 0 error[s] while checking hosts. 9 | [2018-01-16 17:36:21] hummingbird.conf MD5 Report 10 | 4/4 hosts matched, 0 error[s] while checking hosts. 11 | [2018-01-16 17:36:21] hummingbird MD5 Report 12 | 4/4 hosts matched, 0 error[s] while checking hosts. 13 | ``` 14 | 15 | ``` 16 | $ hummingbird recon -md5 -json 17 | { 18 | "Name": "Ring MD5 Report", 19 | "Time": "2018-01-16T17:36:37.703977395Z", 20 | "Pass": true, 21 | "Servers": 4, 22 | "Successes": 4, 23 | "Errors": null 24 | } 25 | { 26 | "Name": "hummingbird.conf MD5 Report", 27 | "Time": "2018-01-16T17:36:37.708930063Z", 28 | "Pass": true, 29 | "Servers": 4, 30 | "Successes": 4, 31 | "Errors": null 32 | } 33 | { 34 | "Name": "hummingbird MD5 Report", 35 | "Time": "2018-01-16T17:36:37.71483282Z", 36 | "Pass": true, 37 | "Servers": 4, 38 | "Successes": 4, 39 | "Errors": null 40 | } 41 | ``` 42 | -------------------------------------------------------------------------------- /docs/admin/timesync.md: -------------------------------------------------------------------------------- 1 | ## Time Sync Report 2 | 3 | The Time Sync Report ensures that all the servers have relatively close time values. If the server times drift quite far from each other, it will cause "odd" intermittent write errors where some servers accept a write as newer and some feel the write is too old. Server times should be corrected immediately and a time sync service like ntp installed. 4 | 5 | ``` 6 | $ hummingbird recon -time 7 | [2018-01-16 18:00:13] Time Sync Report 8 | 4/4 hosts matched, 0 error[s] while checking hosts. 9 | ``` 10 | 11 | ``` 12 | $ hummingbird recon -time -json 13 | { 14 | "Name": "Time Sync Report", 15 | "Time": "2018-01-16T18:00:17.428365173Z", 16 | "Pass": true, 17 | "Servers": 4, 18 | "Successes": 4, 19 | "Errors": null 20 | } 21 | ``` 22 | -------------------------------------------------------------------------------- /docs/arch/hummingbird_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/docs/arch/hummingbird_architecture.png -------------------------------------------------------------------------------- /docs/dev/tempest.md: -------------------------------------------------------------------------------- 1 | Running tempest against HAIO 2 | ============================ 3 | 4 | Quick instructions 5 | 6 | ``` 7 | wget https://github.com/troubling/hummingbird/releases/download/v1.2.0/hummingbird 8 | chmod +x hummingbird 9 | ./hummingbird init haio 10 | ./hummingbird-init-haio.sh 11 | 12 | sudo apt-get install docker.io 13 | git clone https://github.com/nadeemsyed/dockerized-keystone.git 14 | cd dockerized-keystone/ 15 | make 16 | sudo vim /etc/hummingbird/proxy-server.conf 17 | (diff at https://github.com/nadeemsyed/dockerized-keystone/blob/master/README.md) 18 | hball restart 19 | 20 | git clone https://github.com/openstack/tempest.git 21 | cd tempest 22 | sudo apt-get install virtualenv 23 | sudo apt-get install python-dev 24 | virtualenv .venv 25 | source .venv/bin/activate 26 | pip install . 27 | tempest init hbird 28 | cp hbird/etc/tempest.conf.sample hbird/etc/tempest.conf 29 | vim hbird/etc/tempest.conf 30 | (diff at https://gist.github.com/corystone/a5bbafa6804c9278eb951c88127d634c) 31 | 32 | tempest run --workspace hbird --regex object_storage 33 | ``` 34 | -------------------------------------------------------------------------------- /functional/Makefile: -------------------------------------------------------------------------------- 1 | # To run against TempAuth: 2 | # export AUTH_URL=http://127.0.0.1:8080/auth/v1.0 3 | # export AUTH_USER=test:tester 4 | # export AUTH_KEY=testing 5 | # unset AUTH_TENANT 6 | # unset AUTH_PASSWORD 7 | 8 | # To run against Keystone: 9 | # export AUTH_URL=http://192.168.56.1:5000/v3/ 10 | # export AUTH_USER=tester 11 | # export AUTH_TENANT=test 12 | # export AUTH_PASSWORD=testing 13 | # unset AUTH_KEY 14 | 15 | ifndef AUTH_URL 16 | export AUTH_URL=http://127.0.0.1:8080/auth/v1.0 17 | export AUTH_USER=test:tester 18 | export AUTH_KEY=testing 19 | endif 20 | 21 | test: 22 | HUMMINGBIRD_FUNCTIONAL_TESTS=yes go test 23 | -------------------------------------------------------------------------------- /middleware/dbgheader.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package middleware 17 | 18 | import ( 19 | "net/http" 20 | "runtime/debug" 21 | 22 | "github.com/troubling/hummingbird/common/srv" 23 | ) 24 | 25 | func NewDebugResponses(debugHeader bool) func(http.Handler) http.Handler { 26 | return func(next http.Handler) http.Handler { 27 | if debugHeader { 28 | return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { 29 | next.ServeHTTP(srv.NewCustomWriter(writer, func(w http.ResponseWriter, status int) int { 30 | if status/100 != 2 { 31 | buf := debug.Stack() 32 | w.Header().Set("X-Source-Code", string(buf)) 33 | } 34 | return status 35 | }), request) 36 | }) 37 | } 38 | return next 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /middleware/metrics.go: -------------------------------------------------------------------------------- 1 | package middleware 2 | 3 | import ( 4 | "bufio" 5 | "fmt" 6 | "net" 7 | "net/http" 8 | 9 | "github.com/uber-go/tally" 10 | ) 11 | 12 | type recordStatusWriter struct { 13 | http.ResponseWriter 14 | status int 15 | } 16 | 17 | func (mw *recordStatusWriter) WriteHeader(status int) { 18 | mw.status = status 19 | mw.ResponseWriter.WriteHeader(status) 20 | } 21 | 22 | func (mw *recordStatusWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) { 23 | return mw.ResponseWriter.(http.Hijacker).Hijack() 24 | } 25 | 26 | func Metrics(metricsScope tally.Scope) func(http.Handler) http.Handler { 27 | requestsMetric := metricsScope.Counter("requests") 28 | return func(next http.Handler) http.Handler { 29 | return http.HandlerFunc(func(writer http.ResponseWriter, request *http.Request) { 30 | w := &recordStatusWriter{ResponseWriter: writer} 31 | next.ServeHTTP(w, request) 32 | requestsMetric.Inc(1) 33 | metricsScope.Counter(request.Method + "_requests").Inc(1) 34 | metricsScope.Counter(fmt.Sprintf("%d_responses", w.status)).Inc(1) 35 | }) 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /middleware/options.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package middleware 17 | 18 | import ( 19 | "fmt" 20 | "net/http" 21 | 22 | "github.com/troubling/hummingbird/common" 23 | ) 24 | 25 | func OptionsHandler(serverType string, writer http.ResponseWriter, request *http.Request) { 26 | server := fmt.Sprintf("%s/%s", serverType, common.Version) 27 | //We could use introspection in future to figure out the Allow Header. 28 | writer.Header().Set("Allow", "HEAD,GET,PUT,POST,DELETE,OPTIONS") 29 | writer.Header().Set("Server", server) 30 | writer.WriteHeader(http.StatusOK) 31 | return 32 | } 33 | -------------------------------------------------------------------------------- /middleware/testdata/quarantineDetail/sdb4/quarantined/accounts/52f9146296db1c31308103a83a7667ed-8848222/52f9146296db1c31308103a83a7667ed.db: -------------------------------------------------------------------------------- 1 | ks;lkfjsd;lfkjasd 2 | fasdf 3 | asd 4 | fas 5 | df 6 | dsaf 7 | dsaf 8 | asdfasdfdsafdsa 9 | -------------------------------------------------------------------------------- /middleware/testdata/quarantineDetail/sdb4/quarantined/accounts/a2d288042a86975c5e000e0e4b8d5a2b-12343444/a2d288042a86975c5e000e0e4b8d5a2b.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/middleware/testdata/quarantineDetail/sdb4/quarantined/accounts/a2d288042a86975c5e000e0e4b8d5a2b-12343444/a2d288042a86975c5e000e0e4b8d5a2b.db -------------------------------------------------------------------------------- /middleware/testdata/quarantineDetail/sdb4/quarantined/accounts/a2d288042a86975c5e000e0e4b8d5a2b-12343444/a2d288042a86975c5e000e0e4b8d5a2b.db.pending: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/middleware/testdata/quarantineDetail/sdb4/quarantined/accounts/a2d288042a86975c5e000e0e4b8d5a2b-12343444/a2d288042a86975c5e000e0e4b8d5a2b.db.pending -------------------------------------------------------------------------------- /middleware/testdata/quarantineDetail/sdb4/quarantined/containers/330db13d1978d2eaca43612c433bb1be-234234234/330db13d1978d2eaca43612c433bb1be.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/middleware/testdata/quarantineDetail/sdb4/quarantined/containers/330db13d1978d2eaca43612c433bb1be-234234234/330db13d1978d2eaca43612c433bb1be.db -------------------------------------------------------------------------------- /middleware/testdata/quarantineDetail/sdb4/quarantined/containers/ff2d04f90fe4099ce8ecc514bbf514b2-413332114/ff2d04f90fe4099ce8ecc514bbf514b2.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/middleware/testdata/quarantineDetail/sdb4/quarantined/containers/ff2d04f90fe4099ce8ecc514bbf514b2-413332114/ff2d04f90fe4099ce8ecc514bbf514b2.db -------------------------------------------------------------------------------- /middleware/testdata/quarantineDetail/sdb4/quarantined/objects/197ce7d697904ffaada1a16ee3f7a8c0-8585858/1515697139.24261.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/middleware/testdata/quarantineDetail/sdb4/quarantined/objects/197ce7d697904ffaada1a16ee3f7a8c0-8585858/1515697139.24261.data -------------------------------------------------------------------------------- /middleware/testdata/quarantineDetail/sdb4/quarantined/objects/a4f4d624d9a18c20addf439bcb7192e8-2399494/1515696917.18895.data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/middleware/testdata/quarantineDetail/sdb4/quarantined/objects/a4f4d624d9a18c20addf439bcb7192e8-2399494/1515696917.18895.data -------------------------------------------------------------------------------- /middleware/validaterequest.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package middleware 17 | 18 | import ( 19 | "net/http" 20 | 21 | "github.com/troubling/hummingbird/common/srv" 22 | ) 23 | 24 | func ValidateRequest(next http.Handler) http.Handler { 25 | fn := func(writer http.ResponseWriter, request *http.Request) { 26 | if !srv.ValidateRequest(writer, request) { 27 | return 28 | } 29 | next.ServeHTTP(writer, request) 30 | } 31 | return http.HandlerFunc(fn) 32 | } 33 | -------------------------------------------------------------------------------- /objectserver/ecutils_test.go: -------------------------------------------------------------------------------- 1 | package objectserver 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/assert" 7 | ) 8 | 9 | func TestShardLength(t *testing.T) { 10 | length := ecShardLength(1000, 4) 11 | assert.Equal(t, int64(250), length) 12 | length = ecShardLength(0, 4) 13 | assert.Equal(t, int64(0), length) 14 | length = ecShardLength(-12340, 4) 15 | assert.Equal(t, int64(0), length) 16 | length = ecShardLength(1001, 4) 17 | assert.Equal(t, int64(251), length) 18 | length = ecShardLength(1001, 5) 19 | assert.Equal(t, int64(201), length) 20 | length = ecShardLength(1007, 10) 21 | assert.Equal(t, int64(101), length) 22 | } 23 | -------------------------------------------------------------------------------- /objectserver/metadata.go: -------------------------------------------------------------------------------- 1 | package objectserver 2 | 3 | import ( 4 | "fmt" 5 | "hash/fnv" 6 | "sort" 7 | "strings" 8 | ) 9 | 10 | // MetadataHash returns a hash of the contents of the metadata. 11 | func MetadataHash(metadata map[string]string) string { 12 | keys := make([]string, 0, len(metadata)) 13 | for key := range metadata { 14 | keys = append(keys, key) 15 | } 16 | sort.Strings(keys) 17 | hasher := fnv.New64a() 18 | for _, key := range keys { 19 | hasher.Write([]byte(key)) 20 | hasher.Write([]byte{0}) 21 | hasher.Write([]byte(metadata[key])) 22 | hasher.Write([]byte{0}) 23 | } 24 | return fmt.Sprintf("%016x", hasher.Sum64()) 25 | } 26 | 27 | // MetadataMerge will return the result of merging the a and b metadata sets; 28 | // neither a nor b should be used after calling this method. 29 | func MetadataMerge(a map[string]string, b map[string]string) map[string]string { 30 | if a["X-Timestamp"] < b["X-Timestamp"] { 31 | a, b = b, a 32 | } 33 | for _, key := range []string{"Content-Length", "Content-Type", "deleted", "ETag"} { 34 | if _, ok := a[key]; !ok { 35 | if value, ok := b[key]; ok { 36 | a[key] = value 37 | } 38 | } 39 | } 40 | for key, value := range b { 41 | if strings.HasPrefix(key, "X-Object-Sysmeta-") { 42 | if _, ok := a[key]; !ok { 43 | a[key] = value 44 | } 45 | } 46 | } 47 | return a 48 | } 49 | -------------------------------------------------------------------------------- /proxyserver/middleware/healthcheck.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2015-2017 Rackspace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | // implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | package middleware 17 | 18 | import ( 19 | "net/http" 20 | 21 | "github.com/troubling/hummingbird/common/conf" 22 | "github.com/uber-go/tally" 23 | ) 24 | 25 | func NewHealthcheck(config conf.Section, metricsScope tally.Scope) (func(http.Handler) http.Handler, error) { 26 | return func(next http.Handler) http.Handler { 27 | return http.HandlerFunc( 28 | func(writer http.ResponseWriter, request *http.Request) { 29 | if request.URL.Path == "/healthcheck" && request.Method == "GET" { 30 | writer.Header().Set("Content-Length", "2") 31 | writer.WriteHeader(http.StatusOK) 32 | writer.Write([]byte("OK")) 33 | return 34 | } 35 | next.ServeHTTP(writer, request) 36 | }, 37 | ) 38 | }, nil 39 | } 40 | -------------------------------------------------------------------------------- /proxyserver/middleware/pipe_response_test.go: -------------------------------------------------------------------------------- 1 | package middleware 2 | 3 | import ( 4 | "context" 5 | "net/http" 6 | "testing" 7 | 8 | "github.com/stretchr/testify/require" 9 | ) 10 | 11 | func TestGet(t *testing.T) { 12 | passthrough := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 13 | w.Header().Set("X-Hi", "There") 14 | w.Header().Set("X-Hi", "There") 15 | w.Header().Set("Content-Length", "5") 16 | w.WriteHeader(200) 17 | w.Write([]byte("stuff")) 18 | }) 19 | fakeContext := NewFakeProxyContext(passthrough) 20 | dummy, err := http.NewRequest("GET", "/someurl", nil) 21 | dummy = dummy.WithContext(context.WithValue(dummy.Context(), "proxycontext", fakeContext)) 22 | require.Nil(t, err) 23 | body, header, code := PipedGet("/ver/a/c/o", dummy, "test", nil) 24 | require.Equal(t, 200, code) 25 | buf := make([]byte, 1024) 26 | num, err := body.Read(buf) 27 | require.Nil(t, err) 28 | require.Equal(t, 5, num) 29 | require.Equal(t, "stuff", string(buf[:5])) 30 | require.NotNil(t, header) 31 | require.NotNil(t, body) 32 | } 33 | -------------------------------------------------------------------------------- /proxyserver/middleware/s3api_test.go: -------------------------------------------------------------------------------- 1 | package middleware 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/assert" 7 | ) 8 | 9 | func TestValidBucketName(t *testing.T) { 10 | assert.False(t, validBucketName("a")) 11 | assert.False(t, validBucketName("12345678901234567890123456789012345678901234567890123456789012345")) 12 | assert.False(t, validBucketName(")kjdsflk")) 13 | assert.False(t, validBucketName("kjsdflsjf.")) 14 | assert.False(t, validBucketName("8293.-k3j")) 15 | assert.False(t, validBucketName("389-.2898")) 16 | assert.False(t, validBucketName("ksjlkf.28lsj..8298")) 17 | assert.False(t, validBucketName("123.123.123.123")) 18 | assert.False(t, validBucketName("upperCaseIsBad")) 19 | assert.False(t, validBucketName("bucket+invalid")) 20 | assert.True(t, validBucketName("boring.bucket.name")) 21 | } 22 | 23 | func TestS3DateString(t *testing.T) { 24 | // Removes 3 of the last 6 digits 25 | assert.Equal(t, "2018-07-05T18:16:09.295Z", s3DateString("2018-07-05T18:16:09.295890Z")) 26 | // Always adds a Z 27 | assert.Equal(t, "123456Z", s3DateString("123456789")) 28 | // Doesn't index out of range. 29 | assert.Equal(t, "no", s3DateString("no")) 30 | } 31 | -------------------------------------------------------------------------------- /tools/db_test.go: -------------------------------------------------------------------------------- 1 | package tools 2 | 3 | import ( 4 | "fmt" 5 | "sync/atomic" 6 | ) 7 | 8 | var dbTestNameCounter int64 9 | 10 | func dbTestName(name string) string { 11 | return fmt.Sprintf("%s%d", name, atomic.AddInt64(&dbTestNameCounter, 1)) 12 | } 13 | -------------------------------------------------------------------------------- /tools/dispersionpopulateobjects_test.go: -------------------------------------------------------------------------------- 1 | package tools 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/stretchr/testify/require" 7 | "github.com/troubling/hummingbird/common" 8 | "github.com/troubling/hummingbird/common/conf" 9 | "github.com/troubling/hummingbird/common/ring" 10 | "go.uber.org/zap" 11 | ) 12 | 13 | func TestPutDispersionObjects(t *testing.T) { 14 | p := &conf.Policy{Name: "hat"} 15 | // nodeCalls = 4 because we have 4 partitions. 16 | c := &testDispersionClient{objRing: &FakeRing{Devs: []*ring.Device{{Device: "sda"}, {Device: "sdb"}, {Device: "sdc"}}, nodeCalls: 4}} 17 | db, err := newDB(nil, dbTestName("TestPutDispersionObjects")) 18 | if err != nil { 19 | t.Fatal(err) 20 | } 21 | require.True(t, newDispersionPopulateObjects(&AutoAdmin{logger: zap.NewNop(), hClient: c, policies: conf.PolicyList{p.Index: p}, db: db, metricsScope: common.NewTestScope()}).runOnce() < 0) 22 | // 5 because we put one object per partition and there are 4 partitions, and then we put the object-init marker file. 23 | require.Equal(t, 5, c.objPuts) 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.dockerignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/0.10.0 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | [remote "origin"] 8 | url = https://github.com/apache/thrift.git 9 | fetch = +refs/heads/0.10.0:refs/remotes/origin/0.10.0 10 | [branch "0.10.0"] 11 | remote = origin 12 | merge = refs/heads/0.10.0 13 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/hooks/prepare-commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare the commit log message. 4 | # Called by "git commit" with the name of the file that has the 5 | # commit message, followed by the description of the commit 6 | # message's source. The hook's purpose is to edit the commit 7 | # message file. If the hook fails with a non-zero status, 8 | # the commit is aborted. 9 | # 10 | # To enable this hook, rename this file to "prepare-commit-msg". 11 | 12 | # This hook includes three examples. The first comments out the 13 | # "Conflicts:" part of a merge commit. 14 | # 15 | # The second includes the output of "git diff --name-status -r" 16 | # into the message, just before the "git status" output. It is 17 | # commented because it doesn't cope with --amend or with squashed 18 | # commits. 19 | # 20 | # The third example adds a Signed-off-by line to the message, that can 21 | # still be edited. This is rarely a good idea. 22 | 23 | case "$2,$3" in 24 | merge,) 25 | /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; 26 | 27 | # ,|template,) 28 | # /usr/bin/perl -i.bak -pe ' 29 | # print "\n" . `git diff --cached --name-status -r` 30 | # if /^#/ && $first++ == 0' "$1" ;; 31 | 32 | *) ;; 33 | esac 34 | 35 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 36 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 37 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/apache/thrift/.vendored.git/index -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 858809fad01dba7318c33dc30f6cc92a6e2ac7b1 Nadeem Syed 1524838065 -0700 clone: from https://github.com/apache/thrift.git 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/logs/refs/heads/0.10.0: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 858809fad01dba7318c33dc30f6cc92a6e2ac7b1 Nadeem Syed 1524838065 -0700 clone: from https://github.com/apache/thrift.git 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/objects/pack/pack-38797ca9f840e5d19c354341c181c959a62dae7b.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/apache/thrift/.vendored.git/objects/pack/pack-38797ca9f840e5d19c354341c181c959a62dae7b.idx -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/objects/pack/pack-38797ca9f840e5d19c354341c181c959a62dae7b.pack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/apache/thrift/.vendored.git/objects/pack/pack-38797ca9f840e5d19c354341c181c959a62dae7b.pack -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/packed-refs: -------------------------------------------------------------------------------- 1 | # pack-refs with: peeled fully-peeled 2 | 858809fad01dba7318c33dc30f6cc92a6e2ac7b1 refs/remotes/origin/0.10.0 3 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/refs/heads/0.10.0: -------------------------------------------------------------------------------- 1 | 858809fad01dba7318c33dc30f6cc92a6e2ac7b1 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/.vendored.git/shallow: -------------------------------------------------------------------------------- 1 | 858809fad01dba7318c33dc30f6cc92a6e2ac7b1 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/coding_standards.md: -------------------------------------------------------------------------------- 1 | Please follow [General Coding Standards](/doc/coding_standards.md) 2 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/BinaryKeyTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | # Make sure that thrift produce compilable code for binary key 21 | struct testStruct { 22 | 1: required map bin_to_string 23 | } 24 | 25 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/DontExportRWTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | struct InnerStruct { 21 | 1: required string id 22 | } 23 | 24 | struct TestStruct { 25 | 1: required string id 26 | 2: required InnerStruct inner 27 | } 28 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/ErrorTest.thrift: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | * 19 | * Contains some contributions under the Thrift Software License. 20 | * Please see doc/old-thrift-license.txt in the Thrift distribution for 21 | * details. 22 | */ 23 | struct TestStruct 24 | { 25 | 1: map m, 26 | 2: list l, 27 | 3: set s, 28 | 4: i32 i 29 | } 30 | 31 | service ErrorTest 32 | { 33 | TestStruct testStruct(1: TestStruct thing) 34 | string testString(1: string s) 35 | } 36 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/GoTagTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | struct tagged { 21 | 1: string string_thing, 22 | 2: i64 int_thing (go.tag = "json:\"int_thing,string\""), 23 | 3: optional i64 optional_int_thing 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/IgnoreInitialismsTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | struct IgnoreInitialismsTest { 21 | 1: i64 id, 22 | 2: i64 my_id, 23 | 3: i64 num_cpu, 24 | 4: i64 num_gpu, 25 | 5: i64 my_ID, 26 | } 27 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/InitialismsTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | struct InitialismsTest { 21 | 1: string user_id, 22 | 2: string server_url, 23 | 3: string id, 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/MultiplexedProtocolTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | service First { 21 | i64 returnOne(); 22 | } 23 | 24 | service Second { 25 | i64 returnTwo(); 26 | } 27 | 28 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/NamesTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | struct NamesTest { 21 | 1: required string type 22 | } 23 | 24 | service NameCollisionOne 25 | { 26 | void blahBlah() 27 | } 28 | 29 | service NameCollisionTwo 30 | { 31 | void blahBlah() 32 | } 33 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/NamespacedTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | include "ThriftTest.thrift" 21 | 22 | namespace go lib.go.test.namespacedtest 23 | 24 | enum Stuff { 25 | ONE = 1, 26 | TWO = 2, 27 | } 28 | 29 | const i32 THREE = 3; 30 | 31 | typedef i64 UserId 32 | 33 | struct StuffStruct { 34 | 2: Stuff stuff, 35 | } 36 | 37 | service NamespacedService { 38 | ThriftTest.UserId getUserID(), 39 | } 40 | 41 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/OnewayTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | service OneWay { 21 | oneway void hi(1: i64 i, 2: string s) 22 | void emptyfunc() 23 | i64 echo_int(1: i64 param) 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/TypedefFieldTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | # We are only testing that generated code compiles, no correctness checking is done 21 | 22 | enum Details { 23 | Everything = 0 24 | StateOnly = 1 25 | StateAndOptions = 2 26 | SomethingElse = 3 27 | } 28 | 29 | typedef list< Details> DetailsWanted 30 | 31 | struct BaseRequest { 32 | 1 : optional string RequestID 33 | } 34 | 35 | struct GetMyDetails { 36 | 1 : required BaseRequest base_ 37 | 2 : required string ObjectID 38 | 3 : optional DetailsWanted DetailsWanted 39 | } 40 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/UnionDefaultValueTest.thrift: -------------------------------------------------------------------------------- 1 | # 2 | # Licensed to the Apache Software Foundation (ASF) under one 3 | # or more contributor license agreements. See the NOTICE file 4 | # distributed with this work for additional information 5 | # regarding copyright ownership. The ASF licenses this file 6 | # to you under the Apache License, Version 2.0 (the 7 | # "License"); you may not use this file except in compliance 8 | # with the License. You may obtain a copy of the License at 9 | # 10 | # http://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, 13 | # software distributed under the License is distributed on an 14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | # KIND, either express or implied. See the License for the 16 | # specific language governing permissions and limitations 17 | # under the License. 18 | # 19 | 20 | struct Option1 { 21 | } 22 | 23 | struct Option2 { 24 | 1: optional string name 25 | } 26 | 27 | union Descendant { 28 | 1: Option1 option1 29 | 2: Option2 option2 30 | } 31 | 32 | struct TestStruct { 33 | 1: optional Descendant descendant = { "option1": {}} 34 | } 35 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/tests/binary_key_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package tests 21 | 22 | import ( 23 | "binarykeytest" 24 | "testing" 25 | ) 26 | 27 | func TestBinaryMapKeyGeneratesString(t *testing.T) { 28 | s := binarykeytest.NewTestStruct() 29 | //This will only compile if BinToString has type of map[string]string 30 | s.BinToString = make(map[string]string) 31 | } 32 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/tests/names_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package tests 21 | 22 | import ( 23 | "namestest" 24 | "reflect" 25 | "testing" 26 | ) 27 | 28 | func TestThatAttributeNameSubstituionDoesNotOccur(t *testing.T) { 29 | s := namestest.NamesTest{} 30 | st := reflect.TypeOf(s) 31 | _, ok := st.FieldByName("Type") 32 | if !ok { 33 | t.Error("Type attribute is missing!") 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/tests/struct_args_rets_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package tests 21 | 22 | import ( 23 | st "servicestest" 24 | ) 25 | 26 | //this function is never called, it will fail to compile if check is failed 27 | func staticCheckStructArgsResults() { 28 | //Check that struct args and results are passed by reference 29 | var sa *st.StructA = &st.StructA{} 30 | var iface st.AServ 31 | var err error 32 | 33 | sa, err = iface.StructAFunc_1structA(sa) 34 | _ = err 35 | _ = sa 36 | } 37 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/test/tests/union_default_value_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package tests 21 | 22 | import ( 23 | "testing" 24 | "uniondefaultvaluetest" 25 | ) 26 | 27 | func TestUnionDefaultValue(t *testing.T) { 28 | s := uniondefaultvaluetest.NewTestStruct() 29 | d := s.GetDescendant() 30 | if d == nil { 31 | t.Error("Default Union value not set!") 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/binary_protocol_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | import ( 23 | "testing" 24 | ) 25 | 26 | func TestReadWriteBinaryProtocol(t *testing.T) { 27 | ReadWriteProtocolTest(t, NewTBinaryProtocolFactoryDefault()) 28 | } 29 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/buffered_transport_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | import ( 23 | "testing" 24 | ) 25 | 26 | func TestBufferedTransport(t *testing.T) { 27 | trans := NewTBufferedTransport(NewTMemoryBuffer(), 10240) 28 | TransportTest(t, trans, trans) 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/framed_transport_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | import ( 23 | "testing" 24 | ) 25 | 26 | func TestFramedTransport(t *testing.T) { 27 | trans := NewTFramedTransport(NewTMemoryBuffer()) 28 | TransportTest(t, trans, trans) 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/memory_buffer_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | import ( 23 | "testing" 24 | ) 25 | 26 | func TestMemoryBuffer(t *testing.T) { 27 | trans := NewTMemoryBufferLen(1024) 28 | TransportTest(t, trans, trans) 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/messagetype.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | // Message type constants in the Thrift protocol. 23 | type TMessageType int32 24 | 25 | const ( 26 | INVALID_TMESSAGE_TYPE TMessageType = 0 27 | CALL TMessageType = 1 28 | REPLY TMessageType = 2 29 | EXCEPTION TMessageType = 3 30 | ONEWAY TMessageType = 4 31 | ) 32 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/processor.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | // A processor is a generic object which operates upon an input stream and 23 | // writes to some output stream. 24 | type TProcessor interface { 25 | Process(in, out TProtocol) (bool, TException) 26 | } 27 | 28 | type TProcessorFunction interface { 29 | Process(seqId int32, in, out TProtocol) (bool, TException) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/protocol_factory.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | // Factory interface for constructing protocol instances. 23 | type TProtocolFactory interface { 24 | GetProtocol(trans TTransport) TProtocol 25 | } 26 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/server.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | type TServer interface { 23 | ProcessorFactory() TProcessorFactory 24 | ServerTransport() TServerTransport 25 | InputTransportFactory() TTransportFactory 26 | OutputTransportFactory() TTransportFactory 27 | InputProtocolFactory() TProtocolFactory 28 | OutputProtocolFactory() TProtocolFactory 29 | 30 | // Starts the server 31 | Serve() error 32 | // Stops the server. This is optional on a per-implementation basis. Not 33 | // all servers are required to be cleanly stoppable. 34 | Stop() error 35 | } 36 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/server_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | import ( 23 | "testing" 24 | ) 25 | 26 | func TestNothing(t *testing.T) { 27 | 28 | } 29 | -------------------------------------------------------------------------------- /vendor/github.com/apache/thrift/lib/go/thrift/zlib_transport_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one 3 | * or more contributor license agreements. See the NOTICE file 4 | * distributed with this work for additional information 5 | * regarding copyright ownership. The ASF licenses this file 6 | * to you under the Apache License, Version 2.0 (the 7 | * "License"); you may not use this file except in compliance 8 | * with the License. You may obtain a copy of the License at 9 | * 10 | * http://www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, 13 | * software distributed under the License is distributed on an 14 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15 | * KIND, either express or implied. See the License for the 16 | * specific language governing permissions and limitations 17 | * under the License. 18 | */ 19 | 20 | package thrift 21 | 22 | import ( 23 | "compress/zlib" 24 | "testing" 25 | ) 26 | 27 | func TestZlibTransport(t *testing.T) { 28 | trans, err := NewTZlibTransport(NewTMemoryBuffer(), zlib.BestCompression) 29 | if err != nil { 30 | t.Fatal(err) 31 | } 32 | TransportTest(t, trans, trans) 33 | } 34 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/.gitignore: -------------------------------------------------------------------------------- 1 | *.db 2 | *.exe 3 | *.dll 4 | *.o 5 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | sudo: required 3 | dist: trusty 4 | env: 5 | - GOTAGS= 6 | - GOTAGS=libsqlite3 7 | - GOTAGS=trace 8 | - GOTAGS=vtable 9 | go: 10 | - 1.7.x 11 | - 1.8.x 12 | - 1.9.x 13 | - master 14 | before_install: 15 | - go get github.com/mattn/goveralls 16 | - go get golang.org/x/tools/cmd/cover 17 | script: 18 | - $HOME/gopath/bin/goveralls -repotoken 3qJVUE0iQwqnCbmNcDsjYu1nh4J4KIFXx 19 | - go test -race -v . -tags "$GOTAGS" 20 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/COMMIT_HUMMINGBIRD_IS_ON: -------------------------------------------------------------------------------- 1 | 9101028e5ca824d2baf0fbd91b9700e2669a6cd9 2 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Yasuhiro Matsumoto 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/_example/mod_regexp/Makefile: -------------------------------------------------------------------------------- 1 | ifeq ($(OS),Windows_NT) 2 | EXE=extension.exe 3 | EXT=sqlite3_mod_regexp.dll 4 | RM=cmd /c del 5 | LDFLAG= 6 | else 7 | EXE=extension 8 | EXT=sqlite3_mod_regexp.so 9 | RM=rm 10 | LDFLAG=-fPIC 11 | endif 12 | 13 | all : $(EXE) $(EXT) 14 | 15 | $(EXE) : extension.go 16 | go build $< 17 | 18 | $(EXT) : sqlite3_mod_regexp.c 19 | gcc $(LDFLAG) -shared -o $@ $< -lsqlite3 -lpcre 20 | 21 | clean : 22 | @-$(RM) $(EXE) $(EXT) 23 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/_example/mod_regexp/extension.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "database/sql" 5 | "fmt" 6 | "github.com/mattn/go-sqlite3" 7 | "log" 8 | ) 9 | 10 | func main() { 11 | sql.Register("sqlite3_with_extensions", 12 | &sqlite3.SQLiteDriver{ 13 | Extensions: []string{ 14 | "sqlite3_mod_regexp", 15 | }, 16 | }) 17 | 18 | db, err := sql.Open("sqlite3_with_extensions", ":memory:") 19 | if err != nil { 20 | log.Fatal(err) 21 | } 22 | defer db.Close() 23 | 24 | // Force db to make a new connection in pool 25 | // by putting the original in a transaction 26 | tx, err := db.Begin() 27 | if err != nil { 28 | log.Fatal(err) 29 | } 30 | defer tx.Commit() 31 | 32 | // New connection works (hopefully!) 33 | rows, err := db.Query("select 'hello world' where 'hello world' regexp '^hello.*d$'") 34 | if err != nil { 35 | log.Fatal(err) 36 | } 37 | defer rows.Close() 38 | for rows.Next() { 39 | var helloworld string 40 | rows.Scan(&helloworld) 41 | fmt.Println(helloworld) 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/_example/mod_regexp/sqlite3_mod_regexp.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | SQLITE_EXTENSION_INIT1 7 | static void regexp_func(sqlite3_context *context, int argc, sqlite3_value **argv) { 8 | if (argc >= 2) { 9 | const char *target = (const char *)sqlite3_value_text(argv[1]); 10 | const char *pattern = (const char *)sqlite3_value_text(argv[0]); 11 | const char* errstr = NULL; 12 | int erroff = 0; 13 | int vec[500]; 14 | int n, rc; 15 | pcre* re = pcre_compile(pattern, 0, &errstr, &erroff, NULL); 16 | rc = pcre_exec(re, NULL, target, strlen(target), 0, 0, vec, 500); 17 | if (rc <= 0) { 18 | sqlite3_result_error(context, errstr, 0); 19 | return; 20 | } 21 | sqlite3_result_int(context, 1); 22 | } 23 | } 24 | 25 | #ifdef _WIN32 26 | __declspec(dllexport) 27 | #endif 28 | int sqlite3_extension_init(sqlite3 *db, char **errmsg, const sqlite3_api_routines *api) { 29 | SQLITE_EXTENSION_INIT2(api); 30 | return sqlite3_create_function(db, "regexp", 2, SQLITE_UTF8, (void*)db, regexp_func, NULL, NULL); 31 | } 32 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/_example/mod_vtable/Makefile: -------------------------------------------------------------------------------- 1 | ifeq ($(OS),Windows_NT) 2 | EXE=extension.exe 3 | EXT=sqlite3_mod_vtable.dll 4 | RM=cmd /c del 5 | LIBCURL=-lcurldll 6 | LDFLAG= 7 | else 8 | EXE=extension 9 | EXT=sqlite3_mod_vtable.so 10 | RM=rm 11 | LDFLAG=-fPIC 12 | LIBCURL=-lcurl 13 | endif 14 | 15 | all : $(EXE) $(EXT) 16 | 17 | $(EXE) : extension.go 18 | go build $< 19 | 20 | $(EXT) : sqlite3_mod_vtable.cc 21 | g++ $(LDFLAG) -shared -o $@ $< -lsqlite3 $(LIBCURL) 22 | 23 | clean : 24 | @-$(RM) $(EXE) $(EXT) 25 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/_example/mod_vtable/extension.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "database/sql" 5 | "fmt" 6 | "log" 7 | 8 | "github.com/mattn/go-sqlite3" 9 | ) 10 | 11 | func main() { 12 | sql.Register("sqlite3_with_extensions", 13 | &sqlite3.SQLiteDriver{ 14 | Extensions: []string{ 15 | "sqlite3_mod_vtable", 16 | }, 17 | }) 18 | 19 | db, err := sql.Open("sqlite3_with_extensions", ":memory:") 20 | if err != nil { 21 | log.Fatal(err) 22 | } 23 | defer db.Close() 24 | 25 | db.Exec("create virtual table repo using github(id, full_name, description, html_url)") 26 | 27 | rows, err := db.Query("select id, full_name, description, html_url from repo") 28 | if err != nil { 29 | log.Fatal(err) 30 | } 31 | defer rows.Close() 32 | for rows.Next() { 33 | var id, fullName, description, htmlURL string 34 | rows.Scan(&id, &fullName, &description, &htmlURL) 35 | fmt.Printf("%s: %s\n\t%s\n\t%s\n\n", id, fullName, description, htmlURL) 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/_example/vtable/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "database/sql" 5 | "fmt" 6 | "log" 7 | 8 | "github.com/mattn/go-sqlite3" 9 | ) 10 | 11 | func main() { 12 | sql.Register("sqlite3_with_extensions", &sqlite3.SQLiteDriver{ 13 | ConnectHook: func(conn *sqlite3.SQLiteConn) error { 14 | return conn.CreateModule("github", &githubModule{}) 15 | }, 16 | }) 17 | db, err := sql.Open("sqlite3_with_extensions", ":memory:") 18 | if err != nil { 19 | log.Fatal(err) 20 | } 21 | defer db.Close() 22 | 23 | _, err = db.Exec("create virtual table repo using github(id, full_name, description, html_url)") 24 | if err != nil { 25 | log.Fatal(err) 26 | } 27 | 28 | rows, err := db.Query("select id, full_name, description, html_url from repo") 29 | if err != nil { 30 | log.Fatal(err) 31 | } 32 | defer rows.Close() 33 | for rows.Next() { 34 | var id, fullName, description, htmlURL string 35 | rows.Scan(&id, &fullName, &description, &htmlURL) 36 | fmt.Printf("%s: %s\n\t%s\n\t%s\n\n", id, fullName, description, htmlURL) 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_fts5.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build fts5 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo CFLAGS: -DSQLITE_ENABLE_FTS5 11 | #cgo LDFLAGS: -lm 12 | */ 13 | import "C" 14 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_icu.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build icu 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo LDFLAGS: -licuuc -licui18n 11 | #cgo CFLAGS: -DSQLITE_ENABLE_ICU 12 | */ 13 | import "C" 14 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_json1.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build json1 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo CFLAGS: -DSQLITE_ENABLE_JSON1 11 | */ 12 | import "C" 13 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build libsqlite3 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo CFLAGS: -DUSE_LIBSQLITE3 11 | #cgo linux LDFLAGS: -lsqlite3 12 | #cgo darwin LDFLAGS: -L/usr/local/opt/sqlite/lib -lsqlite3 13 | #cgo solaris LDFLAGS: -lsqlite3 14 | */ 15 | import "C" 16 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_omit_load_extension.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build sqlite_omit_load_extension 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo CFLAGS: -DSQLITE_OMIT_LOAD_EXTENSION 11 | */ 12 | import "C" 13 | import ( 14 | "errors" 15 | ) 16 | 17 | func (c *SQLiteConn) loadExtensions(extensions []string) error { 18 | return errors.New("Extensions have been disabled for static builds") 19 | } 20 | 21 | func (c *SQLiteConn) LoadExtension(lib string, entry string) error { 22 | return errors.New("Extensions have been disabled for static builds") 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_other.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build !windows 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo CFLAGS: -I. 11 | #cgo linux LDFLAGS: -ldl 12 | #cgo solaris LDFLAGS: -lc 13 | */ 14 | import "C" 15 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2018 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build solaris 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo CFLAGS: -D__EXTENSIONS__=1 11 | */ 12 | import "C" 13 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2014 Yasuhiro Matsumoto . 2 | // 3 | // Use of this source code is governed by an MIT-style 4 | // license that can be found in the LICENSE file. 5 | // +build windows 6 | 7 | package sqlite3 8 | 9 | /* 10 | #cgo CFLAGS: -I. -fno-stack-check -fno-stack-protector -mno-stack-arg-probe 11 | #cgo windows,386 CFLAGS: -D_USE_32BIT_TIME_T 12 | #cgo LDFLAGS: -lmingwex -lmingw32 13 | */ 14 | import "C" 15 | -------------------------------------------------------------------------------- /vendor/github.com/mattn/go-sqlite3/static_mock.go: -------------------------------------------------------------------------------- 1 | // +build !cgo 2 | 3 | package sqlite3 4 | 5 | import ( 6 | "database/sql" 7 | "database/sql/driver" 8 | "errors" 9 | ) 10 | 11 | func init() { 12 | sql.Register("sqlite3", &SQLiteDriverMock{}) 13 | } 14 | 15 | type SQLiteDriverMock struct{} 16 | 17 | var errorMsg = errors.New("Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub") 18 | 19 | func (SQLiteDriverMock) Open(s string) (driver.Conn, error) { 20 | return nil, errorMsg 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | 10 | # Architecture specific extensions/prefixes 11 | *.[568vq] 12 | [568vq].out 13 | 14 | *.cgo1.go 15 | *.cgo2.c 16 | _cgo_defun.c 17 | _cgo_gotypes.go 18 | _cgo_export.* 19 | 20 | _testmain.go 21 | 22 | *.exe 23 | 24 | *~ 25 | *# 26 | .build 27 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | language: go 3 | 4 | go: 5 | - 1.5.4 6 | - 1.6.2 7 | 8 | script: 9 | - go test -short ./... 10 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/HEAD: -------------------------------------------------------------------------------- 1 | c5b7fccd204277076155f10851dad72b76a49317 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | [remote "origin"] 7 | url = https://github.com/prometheus/client_golang 8 | fetch = +refs/heads/*:refs/remotes/origin/* 9 | [branch "master"] 10 | remote = origin 11 | merge = refs/heads/master 12 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/prometheus/client_golang/.vendored.git/index -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 310ce84375bb84c5cbbf0d05069c92daa5673740 Greg Holt 1499356419 -0700 clone: from https://github.com/prometheus/client_golang 2 | 310ce84375bb84c5cbbf0d05069c92daa5673740 c5b7fccd204277076155f10851dad72b76a49317 Greg Holt 1499363907 -0700 checkout: moving from master to v0.8.0 3 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/logs/refs/heads/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 310ce84375bb84c5cbbf0d05069c92daa5673740 Greg Holt 1499356419 -0700 clone: from https://github.com/prometheus/client_golang 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/logs/refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 310ce84375bb84c5cbbf0d05069c92daa5673740 Greg Holt 1499356419 -0700 clone: from https://github.com/prometheus/client_golang 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/objects/pack/pack-f045c85c054aef5c8695262b0d1b9ad8e1ac3411.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/prometheus/client_golang/.vendored.git/objects/pack/pack-f045c85c054aef5c8695262b0d1b9ad8e1ac3411.idx -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/objects/pack/pack-f045c85c054aef5c8695262b0d1b9ad8e1ac3411.pack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/prometheus/client_golang/.vendored.git/objects/pack/pack-f045c85c054aef5c8695262b0d1b9ad8e1ac3411.pack -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/packed-refs: -------------------------------------------------------------------------------- 1 | # pack-refs with: peeled fully-peeled 2 | e04de4bfe3052a7c7099366931841c084ef7e263 refs/remotes/origin/beorn7/doc 3 | b0be2a1c210191cd76dde6bfe1c1263472f99c9a refs/remotes/origin/beorn7/next 4 | 70693bc2975db2fd288d10d7f03fa7a074fa7179 refs/remotes/origin/grobie/update-graphite-exposition 5 | 310ce84375bb84c5cbbf0d05069c92daa5673740 refs/remotes/origin/master 6 | 1ba5ec2439aae6ca02859bdf7885ac13d4b0a355 refs/remotes/origin/proto3 7 | 17f6046068abc0e2b4b4144c71d563b2d18c06d3 refs/remotes/origin/stn/handler-instrumentation 8 | 88b6ea5852dda9f054a8a410595552ebf67368c9 refs/tags/0.1.0 9 | 39e4bc83f974fb141a9e67c042b26322bacc917b refs/tags/0.2.0 10 | dbbb6c9e1dbb3bf19d0f9a61baa852cbfcee1896 refs/tags/0.3.0 11 | f688948916633c167d810a9548d4b775da43b0b0 refs/tags/0.3.1 12 | 1cf6d4b964951c63779ba7513c57fe389b609014 refs/tags/0.3.2 13 | 97d2bf50bf6557817a4b7bdfb7015aaee5c4ba81 refs/tags/0.4.0 14 | b0bd7e1be33327b85cb4853e7011156e3cedd657 refs/tags/0.5.0 15 | e319516b0f97867d36151451cab8d4aefbe1786b refs/tags/0.6.0 16 | 6dbab8106ed3ed77359ac85d9cf08e30290df864 refs/tags/0.7.0 17 | c5b7fccd204277076155f10851dad72b76a49317 refs/tags/v0.8.0 18 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/refs/heads/master: -------------------------------------------------------------------------------- 1 | 310ce84375bb84c5cbbf0d05069c92daa5673740 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/.vendored.git/refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/remotes/origin/master 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/AUTHORS.md: -------------------------------------------------------------------------------- 1 | The Prometheus project was started by Matt T. Proud (emeritus) and 2 | Julius Volz in 2012. 3 | 4 | Maintainers of this repository: 5 | 6 | * Björn Rabenstein 7 | 8 | The following individuals have contributed code to this repository 9 | (listed in alphabetical order): 10 | 11 | * Bernerd Schaefer 12 | * Björn Rabenstein 13 | * Daniel Bornkessel 14 | * Jeff Younker 15 | * Julius Volz 16 | * Matt T. Proud 17 | * Tobias Schmidt 18 | 19 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Prometheus uses GitHub to manage reviews of pull requests. 4 | 5 | * If you have a trivial fix or improvement, go ahead and create a pull 6 | request, addressing (with `@...`) one or more of the maintainers 7 | (see [AUTHORS.md](AUTHORS.md)) in the description of the pull request. 8 | 9 | * If you plan to do something more involved, first discuss your ideas 10 | on our [mailing list](https://groups.google.com/forum/?fromgroups#!forum/prometheus-developers). 11 | This will avoid unnecessary work and surely give you and us a good deal 12 | of inspiration. 13 | 14 | * Relevant coding style guidelines are the [Go Code Review 15 | Comments](https://code.google.com/p/go-wiki/wiki/CodeReviewComments) 16 | and the _Formatting and style_ section of Peter Bourgon's [Go: Best 17 | Practices for Production 18 | Environments](http://peter.bourgon.org/go-in-production/#formatting-and-style). 19 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/NOTICE: -------------------------------------------------------------------------------- 1 | Prometheus instrumentation library for Go applications 2 | Copyright 2012-2015 The Prometheus Authors 3 | 4 | This product includes software developed at 5 | SoundCloud Ltd. (http://soundcloud.com/). 6 | 7 | 8 | The following components are included in this product: 9 | 10 | perks - a fork of https://github.com/bmizerany/perks 11 | https://github.com/beorn7/perks 12 | Copyright 2013-2015 Blake Mizerany, Björn Rabenstein 13 | See https://github.com/beorn7/perks/blob/master/README.md for license details. 14 | 15 | Go support for Protocol Buffers - Google's data interchange format 16 | http://github.com/golang/protobuf/ 17 | Copyright 2010 The Go Authors 18 | See source code for license details. 19 | 20 | Support for streaming Protocol Buffer messages for the Go language (golang). 21 | https://github.com/matttproud/golang_protobuf_extensions 22 | Copyright 2013 Matt T. Proud 23 | Licensed under the Apache License, Version 2.0 24 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/VERSION: -------------------------------------------------------------------------------- 1 | 0.8.0 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/examples/simple/main.go: -------------------------------------------------------------------------------- 1 | // Copyright 2015 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | // A minimal example of how to include Prometheus instrumentation. 15 | package main 16 | 17 | import ( 18 | "flag" 19 | "net/http" 20 | 21 | "github.com/prometheus/client_golang/prometheus" 22 | ) 23 | 24 | var addr = flag.String("listen-address", ":8080", "The address to listen on for HTTP requests.") 25 | 26 | func main() { 27 | flag.Parse() 28 | http.Handle("/metrics", prometheus.Handler()) 29 | http.ListenAndServe(*addr, nil) 30 | } 31 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/prometheus/.gitignore: -------------------------------------------------------------------------------- 1 | command-line-arguments.test 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/prometheus/README.md: -------------------------------------------------------------------------------- 1 | See [![go-doc](https://godoc.org/github.com/prometheus/client_golang/prometheus?status.svg)](https://godoc.org/github.com/prometheus/client_golang/prometheus). 2 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/prometheus/fnv.go: -------------------------------------------------------------------------------- 1 | package prometheus 2 | 3 | // Inline and byte-free variant of hash/fnv's fnv64a. 4 | 5 | const ( 6 | offset64 = 14695981039346656037 7 | prime64 = 1099511628211 8 | ) 9 | 10 | // hashNew initializies a new fnv64a hash value. 11 | func hashNew() uint64 { 12 | return offset64 13 | } 14 | 15 | // hashAdd adds a string to a fnv64a hash value, returning the updated hash. 16 | func hashAdd(h uint64, s string) uint64 { 17 | for i := 0; i < len(s); i++ { 18 | h ^= uint64(s[i]) 19 | h *= prime64 20 | } 21 | return h 22 | } 23 | 24 | // hashAddByte adds a byte to a fnv64a hash value, returning the updated hash. 25 | func hashAddByte(h uint64, b byte) uint64 { 26 | h ^= uint64(b) 27 | h *= prime64 28 | return h 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/prometheus/client_golang/prometheus/metric_test.go: -------------------------------------------------------------------------------- 1 | // Copyright 2014 The Prometheus Authors 2 | // Licensed under the Apache License, Version 2.0 (the "License"); 3 | // you may not use this file except in compliance with the License. 4 | // You may obtain a copy of the License at 5 | // 6 | // http://www.apache.org/licenses/LICENSE-2.0 7 | // 8 | // Unless required by applicable law or agreed to in writing, software 9 | // distributed under the License is distributed on an "AS IS" BASIS, 10 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | // See the License for the specific language governing permissions and 12 | // limitations under the License. 13 | 14 | package prometheus 15 | 16 | import "testing" 17 | 18 | func TestBuildFQName(t *testing.T) { 19 | scenarios := []struct{ namespace, subsystem, name, result string }{ 20 | {"a", "b", "c", "a_b_c"}, 21 | {"", "b", "c", "b_c"}, 22 | {"a", "", "c", "a_c"}, 23 | {"", "", "c", "c"}, 24 | {"a", "b", "", ""}, 25 | {"a", "", "", ""}, 26 | {"", "b", "", ""}, 27 | {" ", "", "", ""}, 28 | } 29 | 30 | for i, s := range scenarios { 31 | if want, got := s.result, BuildFQName(s.namespace, s.subsystem, s.name); want != got { 32 | t.Errorf("%d. want %s, got %s", i, want, got) 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files, Static and Dynamic libs (Shared Objects) 2 | *.o 3 | *.a 4 | *.so 5 | 6 | # Folders 7 | _obj 8 | _test 9 | vendor 10 | bin 11 | 12 | # Architecture specific extensions/prefixes 13 | *.[568vq] 14 | [568vq].out 15 | 16 | *.cgo1.go 17 | *.cgo2.c 18 | _cgo_defun.c 19 | _cgo_gotypes.go 20 | _cgo_export.* 21 | 22 | _testmain.go 23 | 24 | *.exe 25 | *.test 26 | *.prof 27 | *.pprof 28 | *.out 29 | *.log 30 | 31 | .DS_Store 32 | node_modules/ 33 | 34 | 35 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.travis.yml: -------------------------------------------------------------------------------- 1 | language: go 2 | sudo: false 3 | go: 4 | - 1.5 5 | - 1.6 6 | - 1.7 7 | - 1.8 8 | - tip 9 | env: 10 | global: 11 | - GO15VENDOREXPERIMENT=1 12 | cache: 13 | directories: 14 | - vendor 15 | install: 16 | - npm i uber-licence 17 | - make dependencies 18 | script: 19 | - make test 20 | - make lint 21 | after_success: 22 | - make coveralls 23 | 24 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/heads/master 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | [remote "origin"] 7 | url = https://github.com/uber-go/tally 8 | fetch = +refs/heads/*:refs/remotes/origin/* 9 | [branch "master"] 10 | remote = origin 11 | merge = refs/heads/master 12 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/hooks/prepare-commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare the commit log message. 4 | # Called by "git commit" with the name of the file that has the 5 | # commit message, followed by the description of the commit 6 | # message's source. The hook's purpose is to edit the commit 7 | # message file. If the hook fails with a non-zero status, 8 | # the commit is aborted. 9 | # 10 | # To enable this hook, rename this file to "prepare-commit-msg". 11 | 12 | # This hook includes three examples. The first comments out the 13 | # "Conflicts:" part of a merge commit. 14 | # 15 | # The second includes the output of "git diff --name-status -r" 16 | # into the message, just before the "git status" output. It is 17 | # commented because it doesn't cope with --amend or with squashed 18 | # commits. 19 | # 20 | # The third example adds a Signed-off-by line to the message, that can 21 | # still be edited. This is rarely a good idea. 22 | 23 | case "$2,$3" in 24 | merge,) 25 | /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; 26 | 27 | # ,|template,) 28 | # /usr/bin/perl -i.bak -pe ' 29 | # print "\n" . `git diff --cached --name-status -r` 30 | # if /^#/ && $first++ == 0' "$1" ;; 31 | 32 | *) ;; 33 | esac 34 | 35 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 36 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 37 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber-go/tally/.vendored.git/index -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 88e9c75b0cfc84139ad1bae3b7f123786cfd0770 Greg Holt 1499286807 -0700 clone: from https://github.com/uber-go/tally 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/logs/refs/heads/master: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 88e9c75b0cfc84139ad1bae3b7f123786cfd0770 Greg Holt 1499286807 -0700 clone: from https://github.com/uber-go/tally 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/logs/refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 88e9c75b0cfc84139ad1bae3b7f123786cfd0770 Greg Holt 1499286807 -0700 clone: from https://github.com/uber-go/tally 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/objects/pack/pack-280463e4ee94516578ab93bbdad7bcbb4c9a7811.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber-go/tally/.vendored.git/objects/pack/pack-280463e4ee94516578ab93bbdad7bcbb4c9a7811.idx -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/objects/pack/pack-280463e4ee94516578ab93bbdad7bcbb4c9a7811.pack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber-go/tally/.vendored.git/objects/pack/pack-280463e4ee94516578ab93bbdad7bcbb4c9a7811.pack -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/packed-refs: -------------------------------------------------------------------------------- 1 | # pack-refs with: peeled fully-peeled 2 | e0496a633dd2c276463484b256d3f5f8b17406b7 refs/remotes/origin/histograms 3 | 84a0874d448f1ab90a78962fb906d44773dc796e refs/remotes/origin/jeromefroe/http/add-http-endpoint 4 | e80571313322ebc28baf0ed6c5f3a996d86157a2 refs/remotes/origin/m3-reporter 5 | 88e9c75b0cfc84139ad1bae3b7f123786cfd0770 refs/remotes/origin/master 6 | 94ad8100b9b996d19cac62d2381b5a72e16ec62a refs/tags/v1.0.0 7 | ^08e86c3c1eb55364d563bd6beb982040225f4bb7 8 | 43c1379c0577ac1eb74f9f3869cea07191c9992b refs/tags/v1.1.0 9 | 58c90d19d305abc44b0c81bd6c8343468cae4c3f refs/tags/v2.0.0 10 | 34be4a565ce6286a0ba91a54a81be3f6181ca2e2 refs/tags/v2.1.0 11 | 4b9d9de43ffcb0b7efe67dab2a92c2d58dbf16ab refs/tags/v3.0.0 12 | e9b601813b0be4771b1b3995390567b67ab2b3fc refs/tags/v3.0.1 13 | 88e9c75b0cfc84139ad1bae3b7f123786cfd0770 refs/tags/v3.0.2 14 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/refs/heads/master: -------------------------------------------------------------------------------- 1 | 88e9c75b0cfc84139ad1bae3b7f123786cfd0770 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/.vendored.git/refs/remotes/origin/HEAD: -------------------------------------------------------------------------------- 1 | ref: refs/remotes/origin/master 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/check_license.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | ./node_modules/.bin/uber-licence --version || npm i uber-licence@latest 4 | ./node_modules/.bin/uber-licence --dry --file "*.go" 5 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/example/README.md: -------------------------------------------------------------------------------- 1 | # Print reporter example 2 | 3 | `go run ./*.go` 4 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/m3/example/README.md: -------------------------------------------------------------------------------- 1 | # M3 reporter example 2 | 3 | `go run ./*.go` 4 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/m3/example/config.yaml: -------------------------------------------------------------------------------- 1 | m3: 2 | hostPort: 127.0.0.1:6396 3 | service: m3example 4 | env: staging 5 | tags: 6 | cluster: local 7 | region: us-east 8 | 9 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/m3/thrift/Makefile: -------------------------------------------------------------------------------- 1 | thrift_version := v1.0.0 2 | 3 | gen-thrift: 4 | @thrift --gen go:thrift_import="github.com/apache/thrift/lib/go/thrift" -out . $(thrift_version)/m3.thrift 5 | @rm -rf m3/m3-remote 6 | @mv m3/* . 7 | @rm -rf m3 8 | @echo Generated thrift go files in metrics/m3/thrift/ 9 | 10 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/multi/README.md: -------------------------------------------------------------------------------- 1 | # A buffered multi reporter 2 | 3 | Combine reporters to emit to many backends. 4 | 5 | Multiple `tally.StatsReporter` as a single reporter: 6 | ```go 7 | reporter := NewMultiReporter(statsdReporter, ...) 8 | ``` 9 | 10 | Multiple `tally.CachedStatsReporter` as a single reporter: 11 | ```go 12 | reporter := NewMultiCachedReporter(m3Reporter, promReporter, ...) 13 | ``` 14 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/prometheus/example/README.md: -------------------------------------------------------------------------------- 1 | # Prometheus reporter example 2 | 3 | `go run ./*.go` 4 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/statsd/README.md: -------------------------------------------------------------------------------- 1 | # A buffered statsd reporter 2 | 3 | See `examples/statsd_main.go` for an end to end example. 4 | 5 | Some emitted stats using the example listening with `nc 8125 -l -u`: 6 | 7 | ``` 8 | stats.my-service.test-histogram.100ms-200ms:2|c 9 | stats.my-service.test-histogram.300ms-400ms:1|c 10 | stats.my-service.test-histogram.600ms-800ms:1|c 11 | stats.my-service.test-counter:1|c 12 | stats.my-service.test-gauge:813|g 13 | ``` 14 | 15 | ## Options 16 | 17 | You can use either a basic or a buffered statsd client 18 | and pass it to the reporter along with options. 19 | 20 | The reporter options are: 21 | 22 | ```go 23 | // Options is a set of options for the tally reporter. 24 | type Options struct { 25 | // SampleRate is the metrics emission sample rate. If you 26 | // do not set this value it will be set to 1. 27 | SampleRate float32 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /vendor/github.com/uber-go/tally/statsd/example/README.md: -------------------------------------------------------------------------------- 1 | # Statsd reporter example 2 | 3 | `go run ./*.go` 4 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.gitignore: -------------------------------------------------------------------------------- 1 | *.out 2 | *.test 3 | *.xml 4 | *.swp 5 | .idea/ 6 | .tmp/ 7 | *.iml 8 | *.cov 9 | *.html 10 | *.log 11 | gen/thrift/js 12 | gen/thrift/py 13 | vendor/ 14 | crossdock-main 15 | crossdock/jaeger-docker-compose.yml 16 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "idl"] 2 | path = idl 3 | url = https://github.com/uber/jaeger-idl.git 4 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/HEAD: -------------------------------------------------------------------------------- 1 | 3205d4aabc55c1a13b1e48d3db793bc8cd37bd16 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | [remote "origin"] 8 | url = https://github.com/uber/jaeger-client-go 9 | fetch = +refs/tags/v2.13.0:refs/tags/v2.13.0 10 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-client-go/.vendored.git/index -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 3205d4aabc55c1a13b1e48d3db793bc8cd37bd16 Nadeem Syed 1524837274 -0700 clone: from https://github.com/uber/jaeger-client-go 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/objects/pack/pack-163cd7bc013b67c99fd907f0d0ce19bc18cea177.idx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-client-go/.vendored.git/objects/pack/pack-163cd7bc013b67c99fd907f0d0ce19bc18cea177.idx -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/objects/pack/pack-163cd7bc013b67c99fd907f0d0ce19bc18cea177.pack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-client-go/.vendored.git/objects/pack/pack-163cd7bc013b67c99fd907f0d0ce19bc18cea177.pack -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/packed-refs: -------------------------------------------------------------------------------- 1 | # pack-refs with: peeled fully-peeled 2 | 3205d4aabc55c1a13b1e48d3db793bc8cd37bd16 refs/tags/v2.13.0 3 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/.vendored.git/shallow: -------------------------------------------------------------------------------- 1 | 3205d4aabc55c1a13b1e48d3db793bc8cd37bd16 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/Gopkg.toml: -------------------------------------------------------------------------------- 1 | [[constraint]] 2 | name = "github.com/apache/thrift" 3 | version = ">=0.9.3, <0.11.0" 4 | 5 | [[constraint]] 6 | name = "github.com/crossdock/crossdock-go" 7 | 8 | [[constraint]] 9 | name = "github.com/opentracing/opentracing-go" 10 | version = "^1" 11 | 12 | [[constraint]] 13 | name = "github.com/prometheus/client_golang" 14 | version = "0.8.0" 15 | 16 | [[constraint]] 17 | name = "github.com/stretchr/testify" 18 | version = "^1.1.3" 19 | 20 | [[constraint]] 21 | name = "github.com/uber-go/atomic" 22 | 23 | [[constraint]] 24 | name = "github.com/uber/jaeger-lib" 25 | version = "^1.3" 26 | 27 | [[constraint]] 28 | name = "github.com/uber/tchannel-go" 29 | version = "^1.1.0" 30 | 31 | [[constraint]] 32 | name = "go.uber.org/zap" 33 | 34 | [[constraint]] 35 | name = "golang.org/x/net" 36 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/RELEASE.md: -------------------------------------------------------------------------------- 1 | # Release Process 2 | 3 | 1. Create a PR "Preparing for release X.Y.Z" against master branch 4 | * Alter CHANGELOG.md from ` (unreleased)` to ` (YYYY-MM-DD)` 5 | * Update `JaegerClientVersion` in constants.go to `Go-X.Y.Z` 6 | 2. Create a release "Release X.Y.Z" on Github 7 | * Create Tag `vX.Y.Z` 8 | * Copy CHANGELOG.md into the release notes 9 | 3. Create a PR "Back to development" against master branch 10 | * Add ` (unreleased)` to CHANGELOG.md 11 | * Update `JaegerClientVersion` in constants.go to `Go-dev` 12 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/constants_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package jaeger 16 | 17 | import ( 18 | "strings" 19 | "testing" 20 | ) 21 | 22 | func TestHeaderConstants(t *testing.T) { 23 | if TraceContextHeaderName != strings.ToLower(TraceContextHeaderName) { 24 | t.Errorf("TraceContextHeaderName is not lower-case: %+v", TraceContextHeaderName) 25 | } 26 | if TraceBaggageHeaderPrefix != strings.ToLower(TraceBaggageHeaderPrefix) { 27 | t.Errorf("TraceBaggageHeaderPrefix is not lower-case: %+v", TraceBaggageHeaderPrefix) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/crossdock/.gitignore: -------------------------------------------------------------------------------- 1 | /crossdock 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/crossdock/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM scratch 2 | 3 | ADD crossdock / 4 | 5 | ENV AGENT_HOST_PORT=jaeger-agent:5775 6 | ENV SAMPLING_SERVER_URL=http://test_driver:5778/sampling 7 | 8 | EXPOSE 8080-8082 9 | 10 | CMD ["/crossdock"] 11 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/crossdock/common/constants.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package common 16 | 17 | const ( 18 | // DefaultClientPortHTTP is the port where the client (controller) runs 19 | DefaultClientPortHTTP = "8080" 20 | 21 | // DefaultServerPortHTTP is the port where HTTP server runs 22 | DefaultServerPortHTTP = "8081" 23 | 24 | // DefaultServerPortTChannel is the port where TChannel server runs 25 | DefaultServerPortTChannel = "8082" 26 | 27 | // DefaultServiceName is the service name used by TChannel server 28 | DefaultServiceName = "go" 29 | 30 | // DefaultTracerServiceName is the service name used by the tracer 31 | DefaultTracerServiceName = "crossdock-go" 32 | ) 33 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/crossdock/log/logger.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package log 16 | 17 | import ( 18 | real_log "log" 19 | ) 20 | 21 | // Enabled controls logging from crossdock tests. It is enabled in main.go, but off in unit tests. 22 | var Enabled bool 23 | 24 | // Printf delegates to log.Printf if Enabled == true 25 | func Printf(msg string, args ...interface{}) { 26 | if Enabled { 27 | real_log.Printf(msg, args) 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/crossdock/server/constants.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package server 16 | 17 | import "errors" 18 | 19 | // BaggageKey is the key used to pass baggage item 20 | const BaggageKey = "crossdock-baggage-key" 21 | 22 | var ( 23 | errNoSpanObserved = errors.New("no span found in Context") 24 | errUnrecognizedProtocol = errors.New("unrecognized protocol for downstream call") 25 | errCannotStartInTChannel = errors.New("cannot start new trace in tchannel server") 26 | ) 27 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/crossdock/thrift/.nocover: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-client-go/crossdock/thrift/.nocover -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/crossdock/thrift/tracetest/constants.go: -------------------------------------------------------------------------------- 1 | // Autogenerated by Thrift Compiler (0.9.3) 2 | // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING 3 | 4 | package tracetest 5 | 6 | import ( 7 | "bytes" 8 | "fmt" 9 | "github.com/apache/thrift/lib/go/thrift" 10 | ) 11 | 12 | // (needed to ensure safety because of naive import list construction.) 13 | var _ = thrift.ZERO 14 | var _ = fmt.Printf 15 | var _ = bytes.Equal 16 | 17 | func init() { 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | /* 16 | Package jaeger implements an OpenTracing (http://opentracing.io) Tracer. 17 | It is currently using Zipkin-compatible data model and can be directly 18 | itegrated with Zipkin backend (http://zipkin.io). 19 | 20 | For integration instructions please refer to the README: 21 | 22 | https://github.com/uber/jaeger-client-go/blob/master/README.md 23 | */ 24 | package jaeger 25 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/glide.yaml: -------------------------------------------------------------------------------- 1 | package: github.com/uber/jaeger-client-go 2 | import: 3 | - package: github.com/apache/thrift 4 | version: '>=0.9.3, <0.11.0' 5 | subpackages: 6 | - lib/go/thrift 7 | - package: github.com/opentracing/opentracing-go 8 | version: ^1 9 | subpackages: 10 | - ext 11 | - log 12 | - package: golang.org/x/net 13 | subpackages: 14 | - context 15 | - package: github.com/uber/tchannel-go 16 | version: ^1.1.0 17 | subpackages: 18 | - atomic 19 | - thrift 20 | - thrift/gen-go/meta 21 | - tnet 22 | - trace/thrift/gen-go/tcollector 23 | - typed 24 | - package: github.com/crossdock/crossdock-go 25 | - package: github.com/uber/jaeger-lib 26 | version: ^1.2.1 27 | subpackages: 28 | - metrics 29 | - package: github.com/pkg/errors 30 | version: ~0.8.0 31 | testImport: 32 | - package: github.com/stretchr/testify 33 | version: ^1.1.3 34 | subpackages: 35 | - assert 36 | - require 37 | - suite 38 | - package: github.com/prometheus/client_golang 39 | version: v0.8.0 40 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/internal/baggage/restriction_manager_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package baggage 16 | 17 | import ( 18 | "testing" 19 | 20 | "github.com/stretchr/testify/assert" 21 | ) 22 | 23 | var _ RestrictionManager = &DefaultRestrictionManager{} 24 | 25 | func TestDefaultRestrictionManager(t *testing.T) { 26 | mgr := NewDefaultRestrictionManager(0) 27 | restriction := mgr.GetRestriction("svc", "key") 28 | assert.EqualValues(t, NewRestriction(true, 2048), restriction) 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 The Jaeger Authors. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package throttler 16 | 17 | // Throttler is used to rate limits operations. For example, given how debug spans 18 | // are always sampled, a throttler can be enabled per client to rate limit the amount 19 | // of debug spans a client can start. 20 | type Throttler interface { 21 | // IsAllowed determines whether the operation should be allowed and not be 22 | // throttled. 23 | IsAllowed(operation string) bool 24 | } 25 | 26 | // DefaultThrottler doesn't throttle at all. 27 | type DefaultThrottler struct{} 28 | 29 | // IsAllowed implements Throttler#IsAllowed. 30 | func (t DefaultThrottler) IsAllowed(operation string) bool { 31 | return true 32 | } 33 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/internal/throttler/throttler_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 The Jaeger Authors. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package throttler 16 | 17 | import ( 18 | "testing" 19 | 20 | "github.com/stretchr/testify/assert" 21 | ) 22 | 23 | var _ Throttler = DefaultThrottler{} 24 | 25 | func TestDefaultThrottler(t *testing.T) { 26 | throttler := DefaultThrottler{} 27 | assert.True(t, throttler.IsAllowed("")) 28 | } 29 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/log/logger_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package log 16 | 17 | import ( 18 | "testing" 19 | 20 | "github.com/stretchr/testify/assert" 21 | ) 22 | 23 | func TestLogger(t *testing.T) { 24 | bbLogger := &BytesBufferLogger{} 25 | for _, logger := range []Logger{StdLogger, NullLogger, bbLogger} { 26 | logger.Infof("Hi %s", "there") 27 | logger.Error("Bad wolf") 28 | } 29 | assert.Equal(t, "INFO: Hi there\nERROR: Bad wolf\n", bbLogger.String()) 30 | bbLogger.Flush() 31 | assert.Empty(t, bbLogger.String()) 32 | } 33 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/log/zap/logger.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package zap 16 | 17 | import ( 18 | "go.uber.org/zap" 19 | ) 20 | 21 | // Logger is an adapter from zap Logger to jaeger-lib Logger. 22 | type Logger struct { 23 | logger *zap.SugaredLogger 24 | } 25 | 26 | // NewLogger creates a new Logger. 27 | func NewLogger(logger *zap.Logger) *Logger { 28 | return &Logger{logger: logger.Sugar()} 29 | } 30 | 31 | // Error logs a message at error priority 32 | func (l *Logger) Error(msg string) { 33 | l.logger.Error(msg) 34 | } 35 | 36 | // Infof logs a message at info priority 37 | func (l *Logger) Infof(msg string, args ...interface{}) { 38 | l.logger.Infof(msg, args...) 39 | } 40 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/log/zap/logger_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package zap 16 | 17 | import ( 18 | "bytes" 19 | "testing" 20 | 21 | "github.com/stretchr/testify/assert" 22 | "go.uber.org/zap" 23 | "go.uber.org/zap/zapcore" 24 | ) 25 | 26 | func TestLogger(t *testing.T) { 27 | buf := &bytes.Buffer{} 28 | encoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{MessageKey: "key"}) 29 | logger := NewLogger(zap.New(zapcore.NewCore(encoder, zapcore.AddSync(buf), zapcore.InfoLevel))) 30 | logger.Infof("Hi %s %d", "there", 5) 31 | assert.Equal(t, buf.String(), "Hi there 5\n") 32 | buf.Reset() 33 | logger.Error("Bad wolf") 34 | assert.Equal(t, buf.String(), "Bad wolf\n") 35 | } 36 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/logger_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package jaeger 16 | 17 | import ( 18 | "testing" 19 | 20 | "github.com/uber/jaeger-client-go/log" 21 | ) 22 | 23 | func TestLogger(t *testing.T) { 24 | for _, logger := range []Logger{StdLogger, NullLogger} { 25 | logger.Infof("Hi %s", "there") 26 | logger.Error("Bad wolf") 27 | } 28 | } 29 | 30 | func TestCompatibility(t *testing.T) { 31 | for _, logger := range []log.Logger{StdLogger, NullLogger} { 32 | logger.Infof("Hi %s", "there") 33 | logger.Error("Bad wolf") 34 | } 35 | 36 | for _, logger := range []Logger{log.StdLogger, log.NullLogger} { 37 | logger.Infof("Hi %s", "there") 38 | logger.Error("Bad wolf") 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/process.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 The Jaeger Authors. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package jaeger 16 | 17 | // Process holds process specific metadata that's relevant to this client. 18 | type Process struct { 19 | Service string 20 | UUID string 21 | Tags []Tag 22 | } 23 | 24 | // ProcessSetter sets a process. This can be used by any class that requires 25 | // the process to be set as part of initialization. 26 | // See internal/throttler/remote/throttler.go for an example. 27 | type ProcessSetter interface { 28 | SetProcess(process Process) 29 | } 30 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/reference.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package jaeger 16 | 17 | import "github.com/opentracing/opentracing-go" 18 | 19 | // Reference represents a causal reference to other Spans (via their SpanContext). 20 | type Reference struct { 21 | Type opentracing.SpanReferenceType 22 | Context SpanContext 23 | } 24 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/rpcmetrics/README.md: -------------------------------------------------------------------------------- 1 | An Observer that can be used to emit RPC metrics 2 | ================================================ 3 | 4 | It can be attached to the tracer during tracer construction. 5 | See `ExampleObserver` function in [observer_test.go](./observer_test.go). 6 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/rpcmetrics/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Package rpcmetrics implements an Observer that can be used to emit RPC metrics. 16 | package rpcmetrics 17 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/rpcmetrics/normalizer_test.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package rpcmetrics 16 | 17 | import ( 18 | "testing" 19 | 20 | "github.com/stretchr/testify/assert" 21 | ) 22 | 23 | func TestSimpleNameNormalizer(t *testing.T) { 24 | n := &SimpleNameNormalizer{ 25 | SafeSets: []SafeCharacterSet{ 26 | &Range{From: 'a', To: 'z'}, 27 | &Char{'-'}, 28 | }, 29 | Replacement: '-', 30 | } 31 | assert.Equal(t, "ab-cd", n.Normalize("ab-cd"), "all valid") 32 | assert.Equal(t, "ab-cd", n.Normalize("ab.cd"), "single mismatch") 33 | assert.Equal(t, "a--cd", n.Normalize("aB-cd"), "range letter mismatch") 34 | } 35 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/scripts/cover.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | COVER=.cover 6 | ROOT_PKG=github.com/uber/jaeger-client-go/ 7 | 8 | if [[ -d "$COVER" ]]; then 9 | rm -rf "$COVER" 10 | fi 11 | mkdir -p "$COVER" 12 | 13 | # If a package directory has a .nocover file, don't count it when calculating 14 | # coverage. 15 | filter="" 16 | for pkg in "$@"; do 17 | if [[ -f "$GOPATH/src/$pkg/.nocover" ]]; then 18 | if [[ -n "$filter" ]]; then 19 | filter="$filter, " 20 | fi 21 | filter="\"$pkg\": true" 22 | fi 23 | done 24 | 25 | 26 | i=0 27 | for pkg in "$@"; do 28 | i=$((i + 1)) 29 | 30 | extracoverpkg="" 31 | if [[ -f "$GOPATH/src/$pkg/.extra-coverpkg" ]]; then 32 | extracoverpkg=$( \ 33 | sed -e "s|^|$pkg/|g" < "$GOPATH/src/$pkg/.extra-coverpkg" \ 34 | | tr '\n' ',') 35 | fi 36 | 37 | coverpkg=$(go list -json "$pkg" | jq -r ' 38 | .Deps 39 | | . + ["'"$pkg"'"] 40 | | map 41 | ( select(startswith("'"$ROOT_PKG"'")) 42 | | select(contains("/vendor/") | not) 43 | | select(in({'"$filter"'}) | not) 44 | ) 45 | | join(",") 46 | ') 47 | if [[ -n "$extracoverpkg" ]]; then 48 | coverpkg="$extracoverpkg$coverpkg" 49 | fi 50 | 51 | args="" 52 | if [[ -n "$coverpkg" ]]; then 53 | args="-coverprofile $COVER/cover.${i}.out" # -coverpkg $coverpkg" 54 | fi 55 | 56 | echo go test -v -race "$pkg" 57 | go test $args -v -race "$pkg" 58 | done 59 | 60 | gocovmerge "$COVER"/*.out > cover.out 61 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/scripts/updateLicenses.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | python scripts/updateLicense.py $(git ls-files "*\.go" | grep -v thrift-gen | grep -v tracetest) 6 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/constants.go: -------------------------------------------------------------------------------- 1 | // Autogenerated by Thrift Compiler (0.9.3) 2 | // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING 3 | 4 | package agent 5 | 6 | import ( 7 | "bytes" 8 | "fmt" 9 | "github.com/apache/thrift/lib/go/thrift" 10 | "github.com/uber/jaeger-client-go/thrift-gen/zipkincore" 11 | ) 12 | 13 | // (needed to ensure safety because of naive import list construction.) 14 | var _ = thrift.ZERO 15 | var _ = fmt.Printf 16 | var _ = bytes.Equal 17 | 18 | var _ = zipkincore.GoUnusedProtection__ 19 | 20 | func init() { 21 | } 22 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/thrift-gen/agent/ttypes.go: -------------------------------------------------------------------------------- 1 | // Autogenerated by Thrift Compiler (0.9.3) 2 | // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING 3 | 4 | package agent 5 | 6 | import ( 7 | "bytes" 8 | "fmt" 9 | "github.com/apache/thrift/lib/go/thrift" 10 | "github.com/uber/jaeger-client-go/thrift-gen/zipkincore" 11 | ) 12 | 13 | // (needed to ensure safety because of naive import list construction.) 14 | var _ = thrift.ZERO 15 | var _ = fmt.Printf 16 | var _ = bytes.Equal 17 | 18 | var _ = zipkincore.GoUnusedProtection__ 19 | var GoUnusedProtection__ int 20 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/thrift-gen/baggage/constants.go: -------------------------------------------------------------------------------- 1 | // Autogenerated by Thrift Compiler (0.9.3) 2 | // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING 3 | 4 | package baggage 5 | 6 | import ( 7 | "bytes" 8 | "fmt" 9 | "github.com/apache/thrift/lib/go/thrift" 10 | ) 11 | 12 | // (needed to ensure safety because of naive import list construction.) 13 | var _ = thrift.ZERO 14 | var _ = fmt.Printf 15 | var _ = bytes.Equal 16 | 17 | func init() { 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/thrift-gen/jaeger/constants.go: -------------------------------------------------------------------------------- 1 | // Autogenerated by Thrift Compiler (0.9.3) 2 | // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING 3 | 4 | package jaeger 5 | 6 | import ( 7 | "bytes" 8 | "fmt" 9 | "github.com/apache/thrift/lib/go/thrift" 10 | ) 11 | 12 | // (needed to ensure safety because of naive import list construction.) 13 | var _ = thrift.ZERO 14 | var _ = fmt.Printf 15 | var _ = bytes.Equal 16 | 17 | func init() { 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/thrift-gen/sampling/constants.go: -------------------------------------------------------------------------------- 1 | // Autogenerated by Thrift Compiler (0.9.3) 2 | // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING 3 | 4 | package sampling 5 | 6 | import ( 7 | "bytes" 8 | "fmt" 9 | "github.com/apache/thrift/lib/go/thrift" 10 | ) 11 | 12 | // (needed to ensure safety because of naive import list construction.) 13 | var _ = thrift.ZERO 14 | var _ = fmt.Printf 15 | var _ = bytes.Equal 16 | 17 | func init() { 18 | } 19 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/thrift-gen/zipkincore/constants.go: -------------------------------------------------------------------------------- 1 | // Autogenerated by Thrift Compiler (0.9.3) 2 | // DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING 3 | 4 | package zipkincore 5 | 6 | import ( 7 | "bytes" 8 | "fmt" 9 | "github.com/apache/thrift/lib/go/thrift" 10 | ) 11 | 12 | // (needed to ensure safety because of naive import list construction.) 13 | var _ = thrift.ZERO 14 | var _ = fmt.Printf 15 | var _ = bytes.Equal 16 | 17 | const CLIENT_SEND = "cs" 18 | const CLIENT_RECV = "cr" 19 | const SERVER_SEND = "ss" 20 | const SERVER_RECV = "sr" 21 | const WIRE_SEND = "ws" 22 | const WIRE_RECV = "wr" 23 | const CLIENT_SEND_FRAGMENT = "csf" 24 | const CLIENT_RECV_FRAGMENT = "crf" 25 | const SERVER_SEND_FRAGMENT = "ssf" 26 | const SERVER_RECV_FRAGMENT = "srf" 27 | const LOCAL_COMPONENT = "lc" 28 | const CLIENT_ADDR = "ca" 29 | const SERVER_ADDR = "sa" 30 | 31 | func init() { 32 | } 33 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/thrift/.nocover: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-client-go/thrift/.nocover -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/transport/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Package transport defines various transports that can be used with 16 | // RemoteReporter to send spans out of process. Transport is responsible 17 | // for serializing the spans into a specific format suitable for sending 18 | // to the tracing backend. Examples may include Thrift over UDP, Thrift 19 | // or JSON over HTTP, Thrift over Kafka, etc. 20 | // 21 | // Implementations are NOT required to be thread-safe; the RemoteReporter 22 | // is expected to only call methods on the Transport from the same go-routine. 23 | package transport 24 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/transport/zipkin/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Package zipkin provides various Transports that can be used 16 | // with RemoteReporter for submitting traces to Zipkin backend. 17 | package zipkin 18 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/travis/build-crossdock.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | make crossdock 6 | 7 | export REPO=jaegertracing/xdock-go 8 | export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi) 9 | export TAG=`if [ "$BRANCH" == "master" ]; then echo "latest"; else echo "${BRANCH///}"; fi` 10 | echo "TRAVIS_BRANCH=$TRAVIS_BRANCH, REPO=$REPO, PR=$PR, BRANCH=$BRANCH, TAG=$TAG" 11 | 12 | # Only push the docker container to Docker Hub for master branch 13 | if [[ "$BRANCH" == "master" && "$TRAVIS_SECURE_ENV_VARS" == "true" ]]; then echo 'upload to Docker Hub'; else echo 'skip docker upload for PR'; exit 0; fi 14 | 15 | docker login -u $DOCKER_USER -p $DOCKER_PASS 16 | 17 | set -x 18 | 19 | docker build -f crossdock/Dockerfile -t $REPO:$COMMIT . 20 | 21 | docker tag $REPO:$COMMIT $REPO:$TAG 22 | docker tag $REPO:$COMMIT $REPO:travis-$TRAVIS_BUILD_NUMBER 23 | docker push $REPO 24 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/travis/install-crossdock-deps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | docker version 6 | 7 | # Install docker-compose 8 | sudo rm -f /usr/local/bin/docker-compose 9 | curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose 10 | chmod +x docker-compose 11 | sudo mv docker-compose /usr/local/bin 12 | docker-compose version 13 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/zipkin/README.md: -------------------------------------------------------------------------------- 1 | # Zipkin compatibility features 2 | 3 | ## `NewZipkinB3HTTPHeaderPropagator()` 4 | 5 | Adds support for injecting and extracting Zipkin B3 Propagation HTTP headers, 6 | for use with other Zipkin collectors. 7 | 8 | ```go 9 | 10 | // ... 11 | import ( 12 | "github.com/uber/jaeger-client-go/zipkin" 13 | ) 14 | 15 | func main() { 16 | // ... 17 | zipkinPropagator := zipkin.NewZipkinB3HTTPHeaderPropagator() 18 | injector := jaeger.TracerOptions.Injector(opentracing.HTTPHeaders, zipkinPropagator) 19 | extractor := jaeger.TracerOptions.Extractor(opentracing.HTTPHeaders, zipkinPropagator) 20 | 21 | // Zipkin shares span ID between client and server spans; it must be enabled via the following option. 22 | zipkinSharedRPCSpan := jaeger.TracerOptions.ZipkinSharedRPCSpan(true) 23 | 24 | // create Jaeger tracer 25 | tracer, closer := jaeger.NewTracer( 26 | "myService", 27 | mySampler, // as usual 28 | myReporter // as usual 29 | injector, 30 | extractor, 31 | zipkinSharedRPCSpan, 32 | ) 33 | } 34 | ``` 35 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-client-go/zipkin/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Package zipkin comprises Zipkin functionality for Zipkin compatiblity. 16 | package zipkin 17 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.gitignore: -------------------------------------------------------------------------------- 1 | *.out 2 | *.test 3 | *.xml 4 | *.swp 5 | .idea/ 6 | .tmp/ 7 | *.iml 8 | *.cov 9 | *.html 10 | *.log 11 | vendor/ 12 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: required 2 | 3 | services: 4 | - docker 5 | 6 | language: go 7 | go_import_path: github.com/uber/jaeger-lib 8 | 9 | matrix: 10 | include: 11 | - go: 1.7 12 | env: 13 | - COVERAGE=true 14 | - go: 1.9 15 | env: 16 | - TEST=true 17 | - go: 1.7 18 | env: 19 | - TEST=true 20 | - USE_DEP=true 21 | 22 | env: 23 | global: 24 | - GO15VENDOREXPERIMENT=1 25 | 26 | install: 27 | - if [ "$USE_DEP" == true ]; then make install-dep-ci ; else echo 'skipping installing dep'; fi 28 | - make install-ci 29 | 30 | script: 31 | - if [ "$COVERAGE" == true ]; then make test-ci ; else echo 'skipping tests'; fi 32 | - if [ "$TEST" == true ]; then make test-only-ci ; else echo 'skipping tests'; fi 33 | 34 | after_success: 35 | - if [ "$COVERAGE" == true ]; then mv cover.out coverage.txt ; else echo 'skipping coverage'; fi 36 | - if [ "$COVERAGE" == true ]; then bash <(curl -s https://codecov.io/bash) ; else echo 'skipping coverage'; fi 37 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/HEAD: -------------------------------------------------------------------------------- 1 | 4267858c0679cd4e47cefed8d7f70fd386cfb567 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/config: -------------------------------------------------------------------------------- 1 | [core] 2 | repositoryformatversion = 0 3 | filemode = true 4 | bare = false 5 | logallrefupdates = true 6 | ignorecase = true 7 | [remote "origin"] 8 | url = https://github.com/uber/jaeger-lib 9 | fetch = +refs/tags/v1.4.0:refs/tags/v1.4.0 10 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/description: -------------------------------------------------------------------------------- 1 | Unnamed repository; edit this file 'description' to name the repository. 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/hooks/applypatch-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message taken by 4 | # applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. The hook is 8 | # allowed to edit the commit message file. 9 | # 10 | # To enable this hook, rename this file to "applypatch-msg". 11 | 12 | . git-sh-setup 13 | commitmsg="$(git rev-parse --git-path hooks/commit-msg)" 14 | test -x "$commitmsg" && exec "$commitmsg" ${1+"$@"} 15 | : 16 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/hooks/commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to check the commit log message. 4 | # Called by "git commit" with one argument, the name of the file 5 | # that has the commit message. The hook should exit with non-zero 6 | # status after issuing an appropriate message if it wants to stop the 7 | # commit. The hook is allowed to edit the commit message file. 8 | # 9 | # To enable this hook, rename this file to "commit-msg". 10 | 11 | # Uncomment the below to add a Signed-off-by line to the message. 12 | # Doing this in a hook is a bad idea in general, but the prepare-commit-msg 13 | # hook is more suited to it. 14 | # 15 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 16 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 17 | 18 | # This example catches duplicate Signed-off-by lines. 19 | 20 | test "" = "$(grep '^Signed-off-by: ' "$1" | 21 | sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || { 22 | echo >&2 Duplicate Signed-off-by lines. 23 | exit 1 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/hooks/post-update.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare a packed repository for use over 4 | # dumb transports. 5 | # 6 | # To enable this hook, rename this file to "post-update". 7 | 8 | exec git update-server-info 9 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/hooks/pre-applypatch.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to verify what is about to be committed 4 | # by applypatch from an e-mail message. 5 | # 6 | # The hook should exit with non-zero status after issuing an 7 | # appropriate message if it wants to stop the commit. 8 | # 9 | # To enable this hook, rename this file to "pre-applypatch". 10 | 11 | . git-sh-setup 12 | precommit="$(git rev-parse --git-path hooks/pre-commit)" 13 | test -x "$precommit" && exec "$precommit" ${1+"$@"} 14 | : 15 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/hooks/prepare-commit-msg.sample: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # An example hook script to prepare the commit log message. 4 | # Called by "git commit" with the name of the file that has the 5 | # commit message, followed by the description of the commit 6 | # message's source. The hook's purpose is to edit the commit 7 | # message file. If the hook fails with a non-zero status, 8 | # the commit is aborted. 9 | # 10 | # To enable this hook, rename this file to "prepare-commit-msg". 11 | 12 | # This hook includes three examples. The first comments out the 13 | # "Conflicts:" part of a merge commit. 14 | # 15 | # The second includes the output of "git diff --name-status -r" 16 | # into the message, just before the "git status" output. It is 17 | # commented because it doesn't cope with --amend or with squashed 18 | # commits. 19 | # 20 | # The third example adds a Signed-off-by line to the message, that can 21 | # still be edited. This is rarely a good idea. 22 | 23 | case "$2,$3" in 24 | merge,) 25 | /usr/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;; 26 | 27 | # ,|template,) 28 | # /usr/bin/perl -i.bak -pe ' 29 | # print "\n" . `git diff --cached --name-status -r` 30 | # if /^#/ && $first++ == 0' "$1" ;; 31 | 32 | *) ;; 33 | esac 34 | 35 | # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p') 36 | # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1" 37 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/index: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/index -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/info/exclude: -------------------------------------------------------------------------------- 1 | # git ls-files --others --exclude-from=.git/info/exclude 2 | # Lines that start with '#' are comments. 3 | # For a project mostly in C, the following would be a good set of 4 | # exclude patterns (uncomment them if you want to use them): 5 | # *.[oa] 6 | # *~ 7 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/logs/HEAD: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 4267858c0679cd4e47cefed8d7f70fd386cfb567 Nadeem Syed 1524837489 -0700 clone: from https://github.com/uber/jaeger-lib 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/06/8953d4bd988db39cd869b35f662b80bcb21305: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/06/8953d4bd988db39cd869b35f662b80bcb21305 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/0b/97707b075eba3c799c953955d15276d030823a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/0b/97707b075eba3c799c953955d15276d030823a -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/11/4f092ef5b50637dd8415e48cfb8bf47ad1abe2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/11/4f092ef5b50637dd8415e48cfb8bf47ad1abe2 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/16/00e7905db437090bf6e08784454bd023c48e9f: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/16/00e7905db437090bf6e08784454bd023c48e9f -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/16/a435914cdc13bbd7aa11621137fe67908be724: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/16/a435914cdc13bbd7aa11621137fe67908be724 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/19/326b06a9aee11b06cea7893f439f548b6d1c32: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/19/326b06a9aee11b06cea7893f439f548b6d1c32 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/19/85c92960cf8268182812daf7532afc7e34455a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/19/85c92960cf8268182812daf7532afc7e34455a -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/19/9eb8a035c9975f053f5751a26454af4bf248d0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/19/9eb8a035c9975f053f5751a26454af4bf248d0 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/1b/8db97584862c1ba8c6cc1befff5a00b2fe9196: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/1b/8db97584862c1ba8c6cc1befff5a00b2fe9196 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/1d/5ad801d568f072826bd1b84f78ed35a3a05d68: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/1d/5ad801d568f072826bd1b84f78ed35a3a05d68 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/1e/0e51e973a4787e317fb8ad75cd4b62deb5a0aa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/1e/0e51e973a4787e317fb8ad75cd4b62deb5a0aa -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/20/74752ac0374eac88b245c23dd9b1771d4f20a5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/20/74752ac0374eac88b245c23dd9b1771d4f20a5 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/23/189e694cd72ad25c78cbef7a18bfcaad40b91a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/23/189e694cd72ad25c78cbef7a18bfcaad40b91a -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/23/ea072fcb7f90d6d6b89f946ededd0265f9b665: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/23/ea072fcb7f90d6d6b89f946ededd0265f9b665 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/24/ecb7335a32da6dd75645152c1f159edf96b49b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/24/ecb7335a32da6dd75645152c1f159edf96b49b -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/26/1eeb9e9f8b2b4b0d119366dda99c6fd7d35c64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/26/1eeb9e9f8b2b4b0d119366dda99c6fd7d35c64 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/28/f41b1c82326f94fdb11ab781420b2affd64b72: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/28/f41b1c82326f94fdb11ab781420b2affd64b72 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/2a/6a43efdb458629465bbf1fbf6b7b300c466b31: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/2a/6a43efdb458629465bbf1fbf6b7b300c466b31 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/30/a0d594c6a87fb9271471830343ca48f5c2f1ba: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/30/a0d594c6a87fb9271471830343ca48f5c2f1ba -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/38/704f369dde19ac7b29fdbf485e95181f874b3b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/38/704f369dde19ac7b29fdbf485e95181f874b3b -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/39/74d38c71868ea0abb8a017e82a41864ecf2036: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/39/74d38c71868ea0abb8a017e82a41864ecf2036 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/3b/55b8ba5629a70ca6ba8af31678fd0597353839: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/3b/55b8ba5629a70ca6ba8af31678fd0597353839 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/3c/606391a095089cbf3007a5b3de339524cc0d58: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/3c/606391a095089cbf3007a5b3de339524cc0d58 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/3e/f80ffa8417454c650c8831426104d707b34889: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/3e/f80ffa8417454c650c8831426104d707b34889 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/40/791ebb7082197b2bd096c4316d1680765c870d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/40/791ebb7082197b2bd096c4316d1680765c870d -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/42/67858c0679cd4e47cefed8d7f70fd386cfb567: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/42/67858c0679cd4e47cefed8d7f70fd386cfb567 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/4a/8abdb539f90abf1b29821c71cb6253bfe163b0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/4a/8abdb539f90abf1b29821c71cb6253bfe163b0 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/5b/6722c42599116b8a64ef5ba7521367601598fa: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/5b/6722c42599116b8a64ef5ba7521367601598fa -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/61/d05f6ec700690540f29853ab6d47049268ccb5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/61/d05f6ec700690540f29853ab6d47049268ccb5 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/64/e1b799057cc9aac6bb3306cac968bbe2ed15fd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/64/e1b799057cc9aac6bb3306cac968bbe2ed15fd -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/65/03a6f597ab4102c8cf79ce239c5f2a83e21f77: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/65/03a6f597ab4102c8cf79ce239c5f2a83e21f77 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/66/134b6ccec4784cb50c6e59f915c25daac47f02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/66/134b6ccec4784cb50c6e59f915c25daac47f02 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/6a/acfd297d80989e1eb1981c7c72d588b5610639: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/6a/acfd297d80989e1eb1981c7c72d588b5610639 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/6f/2bf2e39035c09780e45b61d9014fe300e45c6d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/6f/2bf2e39035c09780e45b61d9014fe300e45c6d -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/6f/90f33703863e05d11a6a4fe86f615cd58a9a4a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/6f/90f33703863e05d11a6a4fe86f615cd58a9a4a -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/73/b957b666c631010ad4c688515ce31e3b2561d2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/73/b957b666c631010ad4c688515ce31e3b2561d2 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/77/c1aef4e03168b44d366d46d553a0754cf5ce26: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/77/c1aef4e03168b44d366d46d553a0754cf5ce26 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/79/2377295a177e8136a13f90fbfb9c7cb2c1075c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/79/2377295a177e8136a13f90fbfb9c7cb2c1075c -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/7d/9226c6645945b59bf20ee399511643e7fe5552: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/7d/9226c6645945b59bf20ee399511643e7fe5552 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/7d/9b511618bc7bf1ccb12ed578631b2c9b81e9f7: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/7d/9b511618bc7bf1ccb12ed578631b2c9b81e9f7 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/8c/3624849cc688b6ab9da1930dba5bf88fd3724d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/8c/3624849cc688b6ab9da1930dba5bf88fd3724d -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/8f/a7daa05f19a5df4c1a92d6e3ece648fed8f1b1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/8f/a7daa05f19a5df4c1a92d6e3ece648fed8f1b1 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/91/91acbea1b85a2f789879d6c426d6b5b32ff9c3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/91/91acbea1b85a2f789879d6c426d6b5b32ff9c3 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/95/be7d6cd940f0fe47b5dcd0daa0662004dba69e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/95/be7d6cd940f0fe47b5dcd0daa0662004dba69e -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/97/8c3e9ea26682d4ed2dc1cdd30d36b7044f091a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/97/8c3e9ea26682d4ed2dc1cdd30d36b7044f091a -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/9c/c72383320f876d31dc48efe78f55c441a28b7c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/9c/c72383320f876d31dc48efe78f55c441a28b7c -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/9e/bd24e89b123250fb01106cadeecb5bfc5e734d: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/9e/bd24e89b123250fb01106cadeecb5bfc5e734d -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/9f/c7aba2953bd6807b7881590d57a553e193f9b4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/9f/c7aba2953bd6807b7881590d57a553e193f9b4 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a0/75afb425747c7bccf082c7f4bb796cacbed8e8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a0/75afb425747c7bccf082c7f4bb796cacbed8e8 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a1/3f8f08248d21ed0fd677bfefb8c6ad1abebf2b: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a1/3f8f08248d21ed0fd677bfefb8c6ad1abebf2b -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a3/93b0a202d80473e8ae07e1e6cfb993dbdbde43: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a3/93b0a202d80473e8ae07e1e6cfb993dbdbde43 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a7/44a890df3d7a2862010287d1ca46ad4fc18d1f: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/a7/44a890df3d7a2862010287d1ca46ad4fc18d1f -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b0/dcc013451298f89345b860a1948c3de0f26ba2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b0/dcc013451298f89345b860a1948c3de0f26ba2 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b3/79dfabbb3984b49975fcfea64eff22d18f38f5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b3/79dfabbb3984b49975fcfea64eff22d18f38f5 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b6/2c08af62cfaa848f6b23a9414b39b96f0f816c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b6/2c08af62cfaa848f6b23a9414b39b96f0f816c -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b9/7e1e39958ee4e3ca554996ffc73c9d32ed9ee0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/b9/7e1e39958ee4e3ca554996ffc73c9d32ed9ee0 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/bc/2e137ccc9936953ac8a16c25697faec6a1e18e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/bc/2e137ccc9936953ac8a16c25697faec6a1e18e -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/be/6b97dd8f829b8db214aac8895849d9b6c4576a: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/be/6b97dd8f829b8db214aac8895849d9b6c4576a -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c3/791b60b16fa4190d9d2b2ff8b3779cad1efca3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c3/791b60b16fa4190d9d2b2ff8b3779cad1efca3 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c4/2a7f0e8f369f8d54aef624166aad5140251610: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c4/2a7f0e8f369f8d54aef624166aad5140251610 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c5/5e1d263a97b07678c9bc59a3c2a85f6c8ccd40: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c5/5e1d263a97b07678c9bc59a3c2a85f6c8ccd40 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c6/797d24bdd7c3828d06da6f094754e495caa5e0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c6/797d24bdd7c3828d06da6f094754e495caa5e0 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c9/f8ec9a7e58149274a4a65637dcc03a99040467: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/c9/f8ec9a7e58149274a4a65637dcc03a99040467 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d1/9c23c68f89ee6bde22a5adcf6b9d2b648f685e: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d1/9c23c68f89ee6bde22a5adcf6b9d2b648f685e -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d5/e7d0eed1b0448ef596c94252b005f3bb98a401: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d5/e7d0eed1b0448ef596c94252b005f3bb98a401 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d7/fc19ecb1d36945e33164e3dd94075805122770: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d7/fc19ecb1d36945e33164e3dd94075805122770 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d9/2493210688d2d47b057f1aa35fb56ed2e313bb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/d9/2493210688d2d47b057f1aa35fb56ed2e313bb -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/de/86e2062e7eb599cffc4c7f730f785aac54f0b0: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/de/86e2062e7eb599cffc4c7f730f785aac54f0b0 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/de/b525a45d31973d4cd2dafd77025fd64bc01b72: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/de/b525a45d31973d4cd2dafd77025fd64bc01b72 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/e1/34d1de075f1047d01f8a555555bfcab86a0e0c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/e1/34d1de075f1047d01f8a555555bfcab86a0e0c -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/e1/6880f10132a3e973ef9e2eb112cdaa71839b02: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/e1/6880f10132a3e973ef9e2eb112cdaa71839b02 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/e1/8d222abb4abb846a630afd69cfd268fcf0dff8: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/e1/8d222abb4abb846a630afd69cfd268fcf0dff8 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/f4/dc71ca266a1bd5f763ab00e789bcf96ed241df: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/f4/dc71ca266a1bd5f763ab00e789bcf96ed241df -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/f4/dede6b09cfc99a3aa286df61b532f56503c69c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/f4/dede6b09cfc99a3aa286df61b532f56503c69c -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/f8/621c66f88c1aad14e6c24a37d94f36a58ca855: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/f8/621c66f88c1aad14e6c24a37d94f36a58ca855 -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/objects/fb/bbe20ac3b215835563a42380cc00fec6dab2dd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/troubling/hummingbird/a5bd8189dbf51f67627e94d071ae6739093d8c0d/vendor/github.com/uber/jaeger-lib/.vendored.git/objects/fb/bbe20ac3b215835563a42380cc00fec6dab2dd -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/packed-refs: -------------------------------------------------------------------------------- 1 | # pack-refs with: peeled fully-peeled 2 | 4267858c0679cd4e47cefed8d7f70fd386cfb567 refs/tags/v1.4.0 3 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/.vendored.git/shallow: -------------------------------------------------------------------------------- 1 | 4267858c0679cd4e47cefed8d7f70fd386cfb567 2 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Changes by Version 2 | ================== 3 | 4 | 1.4.0 (2018-03-05) 5 | ------------------ 6 | 7 | - Reimplement expvar metrics to be tolerant of duplicates (#40) 8 | 9 | 10 | 1.3.1 (2018-01-12) 11 | ------------------- 12 | 13 | - Add Gopkg.toml to allow using the lib with `dep` 14 | 15 | 16 | 1.3.0 (2018-01-08) 17 | ------------------ 18 | 19 | - Move rate limiter from client to jaeger-lib [#35](https://github.com/jaegertracing/jaeger-lib/pull/35) 20 | 21 | 22 | 1.2.1 (2017-11-14) 23 | ------------------ 24 | 25 | - *breaking* Change prometheus.New() to accept options instead of fixed arguments 26 | 27 | 28 | 1.2.0 (2017-11-12) 29 | ------------------ 30 | 31 | - Support Prometheus metrics directly [#29](https://github.com/jaegertracing/jaeger-lib/pull/29). 32 | 33 | 34 | 1.1.0 (2017-09-10) 35 | ------------------ 36 | 37 | - Re-releasing the project under Apache 2.0 license. 38 | 39 | 40 | 1.0.0 (2017-08-22) 41 | ------------------ 42 | 43 | - First semver release. 44 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/Gopkg.toml: -------------------------------------------------------------------------------- 1 | [[constraint]] 2 | name = "github.com/codahale/hdrhistogram" 3 | 4 | [[constraint]] 5 | name = "github.com/go-kit/kit" 6 | version = "0.5.0" 7 | 8 | [[constraint]] 9 | name = "github.com/influxdata/influxdb" 10 | 11 | [[constraint]] 12 | name = "github.com/prometheus/client_golang" 13 | version = "0.8.0" 14 | 15 | [[constraint]] 16 | name = "github.com/prometheus/client_model" 17 | 18 | [[constraint]] 19 | name = "github.com/stretchr/testify" 20 | 21 | [[constraint]] 22 | name = "github.com/uber-go/tally" 23 | version = ">=2.1.0, <4.0.0" 24 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/README.md: -------------------------------------------------------------------------------- 1 | [![GoDoc][doc-img]][doc] [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov] 2 | 3 | 4 | # jaeger-lib 5 | 6 | A collection of shared infrastructure libraries used by different 7 | components of [Jaeger](https://github.com/uber/jaeger) backend and [jaeger-client-go](https://github.com/uber/jaeger-client-go). 8 | This library is *not intended to be used standalone*, and provides *no guarantees of backwards compatibility*. 9 | 10 | The library's import path is `github.com/uber/jaeger-lib`. 11 | 12 | ## How to Contribute 13 | 14 | Please see [CONTRIBUTING.md](CONTRIBUTING.md). 15 | 16 | [doc-img]: https://godoc.org/github.com/uber/jaeger-lib?status.svg 17 | [doc]: https://godoc.org/github.com/uber/jaeger-lib 18 | [ci-img]: https://travis-ci.org/jaegertracing/jaeger-lib.svg?branch=master 19 | [ci]: https://travis-ci.org/jaegertracing/jaeger-lib 20 | [cov-img]: https://coveralls.io/repos/jaegertracing/jaeger-lib/badge.svg?branch=master&service=github 21 | [cov]: https://coveralls.io/github/jaegertracing/jaeger-lib?branch=master 22 | 23 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/client/log/go-kit/logger_test.go: -------------------------------------------------------------------------------- 1 | package xkit 2 | 3 | import ( 4 | "bytes" 5 | "testing" 6 | 7 | "github.com/go-kit/kit/log" 8 | "github.com/stretchr/testify/assert" 9 | ) 10 | 11 | func TestLogger_Infof(t *testing.T) { 12 | buf := &bytes.Buffer{} 13 | logger := NewLogger(log.NewLogfmtLogger(buf)) 14 | 15 | logger.Infof("Formatted %s", "string") 16 | 17 | assert.Equal(t, "level=info msg=\"Formatted string\"\n", buf.String()) 18 | } 19 | 20 | func TestLogger_Error(t *testing.T) { 21 | buf := &bytes.Buffer{} 22 | logger := NewLogger(log.NewLogfmtLogger(buf)) 23 | 24 | logger.Error("Something really bad happened") 25 | 26 | assert.Equal(t, "level=error msg=\"Something really bad happened\"\n", buf.String()) 27 | } 28 | 29 | func TestMessageKey(t *testing.T) { 30 | buf := &bytes.Buffer{} 31 | logger := NewLogger(log.NewLogfmtLogger(buf), MessageKey("message")) 32 | 33 | logger.Error("Something really bad happened") 34 | 35 | assert.Equal(t, "level=error message=\"Something really bad happened\"\n", buf.String()) 36 | } 37 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/glide.yaml: -------------------------------------------------------------------------------- 1 | package: github.com/uber/jaeger-lib 2 | import: 3 | - package: github.com/codahale/hdrhistogram 4 | - package: github.com/go-kit/kit 5 | version: v0.5.0 6 | subpackages: 7 | - metrics/influx 8 | - package: github.com/uber-go/tally 9 | version: '>= 2.1.0, < 4' 10 | - package: github.com/prometheus/client_golang 11 | version: v0.8.0 12 | testImport: 13 | - package: github.com/stretchr/testify 14 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/metrics/counter.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package metrics 16 | 17 | // Counter tracks the number of times an event has occurred 18 | type Counter interface { 19 | // Inc adds the given value to the counter. 20 | Inc(int64) 21 | } 22 | 23 | // NullCounter counter that does nothing 24 | var NullCounter Counter = nullCounter{} 25 | 26 | type nullCounter struct{} 27 | 28 | func (nullCounter) Inc(int64) {} 29 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/metrics/gauge.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package metrics 16 | 17 | // Gauge returns instantaneous measurements of something as an int64 value 18 | type Gauge interface { 19 | // Update the gauge to the value passed in. 20 | Update(int64) 21 | } 22 | 23 | // NullGauge gauge that does nothing 24 | var NullGauge Gauge = nullGauge{} 25 | 26 | type nullGauge struct{} 27 | 28 | func (nullGauge) Update(int64) {} 29 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/metrics/go-kit/expvar/factory_test.go: -------------------------------------------------------------------------------- 1 | package expvar 2 | 3 | import ( 4 | "expvar" 5 | "testing" 6 | 7 | "github.com/stretchr/testify/assert" 8 | ) 9 | 10 | func TestCounter(t *testing.T) { 11 | f := NewFactory(10) 12 | assert.False(t, f.Capabilities().Tagging) 13 | c := f.Counter("gokit_expvar_counter") 14 | c.Add(42) 15 | kv := findExpvar("gokit_expvar_counter") 16 | assert.Equal(t, "42", kv.Value.String()) 17 | } 18 | 19 | func TestGauge(t *testing.T) { 20 | f := NewFactory(10) 21 | g := f.Gauge("gokit_expvar_gauge") 22 | g.Set(42) 23 | kv := findExpvar("gokit_expvar_gauge") 24 | assert.Equal(t, "42", kv.Value.String()) 25 | } 26 | 27 | func TestHistogram(t *testing.T) { 28 | f := NewFactory(10) 29 | hist := f.Histogram("gokit_expvar_hist") 30 | hist.Observe(10.5) 31 | kv := findExpvar("gokit_expvar_hist.p50") 32 | assert.Equal(t, "10.5", kv.Value.String()) 33 | } 34 | 35 | func findExpvar(key string) *expvar.KeyValue { 36 | var kv *expvar.KeyValue 37 | expvar.Do(func(v expvar.KeyValue) { 38 | if v.Key == key { 39 | kv = &v 40 | } 41 | }) 42 | return kv 43 | } 44 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/metrics/go-kit/metrics_test.go: -------------------------------------------------------------------------------- 1 | package xkit 2 | 3 | import ( 4 | "testing" 5 | "time" 6 | 7 | "github.com/go-kit/kit/metrics/generic" 8 | "github.com/stretchr/testify/assert" 9 | 10 | "github.com/uber/jaeger-lib/metrics" 11 | ) 12 | 13 | func TestCounter(t *testing.T) { 14 | kitCounter := generic.NewCounter("abc") 15 | var counter metrics.Counter = NewCounter(kitCounter) 16 | counter.Inc(123) 17 | assert.EqualValues(t, 123, kitCounter.Value()) 18 | } 19 | 20 | func TestGauge(t *testing.T) { 21 | kitGauge := generic.NewGauge("abc") 22 | var gauge metrics.Gauge = NewGauge(kitGauge) 23 | gauge.Update(123) 24 | assert.EqualValues(t, 123, kitGauge.Value()) 25 | } 26 | 27 | func TestTimer(t *testing.T) { 28 | kitHist := generic.NewHistogram("abc", 10) 29 | var timer metrics.Timer = NewTimer(kitHist) 30 | timer.Record(100*time.Millisecond + 500*time.Microsecond) // 100.5 milliseconds 31 | assert.EqualValues(t, 0.1005, kitHist.Quantile(0.9)) 32 | } 33 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/metrics/multi/multi_test.go: -------------------------------------------------------------------------------- 1 | package multi 2 | 3 | import ( 4 | "testing" 5 | "time" 6 | 7 | "github.com/stretchr/testify/assert" 8 | "github.com/uber/jaeger-lib/metrics" 9 | "github.com/uber/jaeger-lib/metrics/testutils" 10 | ) 11 | 12 | var _ metrics.Factory = &Factory{} // API check 13 | 14 | func TestMultiFactory(t *testing.T) { 15 | f1 := metrics.NewLocalFactory(time.Second) 16 | f2 := metrics.NewLocalFactory(time.Second) 17 | multi1 := New(f1, f2) 18 | multi2 := multi1.Namespace("ns2", nil) 19 | tags := map[string]string{"x": "y"} 20 | multi2.Counter("counter", tags).Inc(42) 21 | multi2.Gauge("gauge", tags).Update(42) 22 | multi2.Timer("timer", tags).Record(42 * time.Millisecond) 23 | 24 | for _, f := range []*metrics.LocalFactory{f1, f2} { 25 | testutils.AssertCounterMetrics(t, f, 26 | testutils.ExpectedMetric{Name: "ns2.counter", Tags: tags, Value: 42}) 27 | testutils.AssertGaugeMetrics(t, f, 28 | testutils.ExpectedMetric{Name: "ns2.gauge", Tags: tags, Value: 42}) 29 | _, g := f.Snapshot() 30 | assert.EqualValues(t, 43, g["ns2.timer|x=y.P99"]) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/metrics/testutils/testutils_test.go: -------------------------------------------------------------------------------- 1 | package testutils 2 | 3 | import ( 4 | "testing" 5 | 6 | "github.com/uber/jaeger-lib/metrics" 7 | ) 8 | 9 | func TestAssertMetrics(t *testing.T) { 10 | f := metrics.NewLocalFactory(0) 11 | tags := map[string]string{"key": "value"} 12 | f.IncCounter("counter", tags, 1) 13 | f.UpdateGauge("gauge", tags, 11) 14 | 15 | AssertCounterMetrics(t, f, ExpectedMetric{Name: "counter", Tags: tags, Value: 1}) 16 | AssertGaugeMetrics(t, f, ExpectedMetric{Name: "gauge", Tags: tags, Value: 11}) 17 | } 18 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/metrics/timer.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package metrics 16 | 17 | import ( 18 | "time" 19 | ) 20 | 21 | // Timer accumulates observations about how long some operation took, 22 | // and also maintains a historgam of percentiles. 23 | type Timer interface { 24 | // Records the time passed in. 25 | Record(time.Duration) 26 | } 27 | 28 | // NullTimer timer that does nothing 29 | var NullTimer Timer = nullTimer{} 30 | 31 | type nullTimer struct{} 32 | 33 | func (nullTimer) Record(time.Duration) {} 34 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/sample/sample.go: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017 Uber Technologies, Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package sample 16 | 17 | import ( 18 | "fmt" 19 | ) 20 | 21 | // SayHello is a sample function 22 | func SayHello() { 23 | fmt.Println("Hello, playground") 24 | } 25 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/sample/sample_test.go: -------------------------------------------------------------------------------- 1 | package sample 2 | 3 | import "testing" 4 | 5 | func ExampleSayHello() { 6 | SayHello() 7 | // Output: Hello, playground 8 | } 9 | 10 | func TestSayHello(t *testing.T) { 11 | SayHello() 12 | } 13 | -------------------------------------------------------------------------------- /vendor/github.com/uber/jaeger-lib/scripts/updateLicenses.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | set -x 5 | 6 | python scripts/updateLicense.py $(go list -json $(glide nv) | jq -r '.Dir + "/" + (.GoFiles | .[])') 7 | --------------------------------------------------------------------------------