├── .gitignore
├── .travis.yml
├── Dockerfile
├── Gopkg.lock
├── Gopkg.toml
├── LICENSE
├── README.md
├── adaptiveRouter.go
├── adaptiveRouter_test.go
├── bin
├── schema.xml
├── solr-tests
├── solrconfig.xml
├── start-solr
├── start-zk
└── travis-tests
├── clusterState.go
├── cmd
├── SolrJLoadTest.class
├── SolrJLoadTest.java
├── run.sh
├── solr-solrj-6.4.2.jar
└── solrRunner.go
├── docker-compose.cluster.yml
├── docker-compose.travis.yml
├── docker-compose.yml
├── errors.go
├── hash.go
├── hash_test.go
├── makefile
├── roundRobinRouter.go
├── roundRobinRouter_test.go
├── schemas.go
├── solrHttp.go
├── solrHttpRetry.go
├── solrLeader.go
├── solrResponse.go
├── solrSync.go
├── solrZk.go
├── solr_go_suite_test.go
├── solr_test.go
├── vendor
├── github.com
│ ├── onsi
│ │ ├── ginkgo
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── CHANGELOG.md
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── RELEASING.md
│ │ │ ├── before_pr.sh
│ │ │ ├── config
│ │ │ │ └── config.go
│ │ │ ├── ginkgo_dsl.go
│ │ │ ├── internal
│ │ │ │ ├── codelocation
│ │ │ │ │ └── code_location.go
│ │ │ │ ├── containernode
│ │ │ │ │ └── container_node.go
│ │ │ │ ├── failer
│ │ │ │ │ └── failer.go
│ │ │ │ ├── leafnodes
│ │ │ │ │ ├── benchmarker.go
│ │ │ │ │ ├── interfaces.go
│ │ │ │ │ ├── it_node.go
│ │ │ │ │ ├── measure_node.go
│ │ │ │ │ ├── runner.go
│ │ │ │ │ ├── setup_nodes.go
│ │ │ │ │ ├── suite_nodes.go
│ │ │ │ │ ├── synchronized_after_suite_node.go
│ │ │ │ │ └── synchronized_before_suite_node.go
│ │ │ │ ├── remote
│ │ │ │ │ ├── aggregator.go
│ │ │ │ │ ├── forwarding_reporter.go
│ │ │ │ │ ├── output_interceptor.go
│ │ │ │ │ ├── output_interceptor_unix.go
│ │ │ │ │ ├── output_interceptor_win.go
│ │ │ │ │ ├── server.go
│ │ │ │ │ ├── syscall_dup_linux_arm64.go
│ │ │ │ │ ├── syscall_dup_solaris.go
│ │ │ │ │ └── syscall_dup_unix.go
│ │ │ │ ├── spec
│ │ │ │ │ ├── spec.go
│ │ │ │ │ └── specs.go
│ │ │ │ ├── spec_iterator
│ │ │ │ │ ├── index_computer.go
│ │ │ │ │ ├── parallel_spec_iterator.go
│ │ │ │ │ ├── serial_spec_iterator.go
│ │ │ │ │ ├── sharded_parallel_spec_iterator.go
│ │ │ │ │ └── spec_iterator.go
│ │ │ │ ├── specrunner
│ │ │ │ │ ├── random_id.go
│ │ │ │ │ └── spec_runner.go
│ │ │ │ ├── suite
│ │ │ │ │ └── suite.go
│ │ │ │ ├── testingtproxy
│ │ │ │ │ └── testing_t_proxy.go
│ │ │ │ └── writer
│ │ │ │ │ ├── fake_writer.go
│ │ │ │ │ └── writer.go
│ │ │ ├── reporters
│ │ │ │ ├── default_reporter.go
│ │ │ │ ├── fake_reporter.go
│ │ │ │ ├── junit_reporter.go
│ │ │ │ ├── reporter.go
│ │ │ │ ├── stenographer
│ │ │ │ │ ├── console_logging.go
│ │ │ │ │ ├── fake_stenographer.go
│ │ │ │ │ ├── stenographer.go
│ │ │ │ │ └── support
│ │ │ │ │ │ ├── go-colorable
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── colorable_others.go
│ │ │ │ │ │ ├── colorable_windows.go
│ │ │ │ │ │ └── noncolorable.go
│ │ │ │ │ │ └── go-isatty
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── doc.go
│ │ │ │ │ │ ├── isatty_appengine.go
│ │ │ │ │ │ ├── isatty_bsd.go
│ │ │ │ │ │ ├── isatty_linux.go
│ │ │ │ │ │ ├── isatty_solaris.go
│ │ │ │ │ │ └── isatty_windows.go
│ │ │ │ └── teamcity_reporter.go
│ │ │ └── types
│ │ │ │ ├── code_location.go
│ │ │ │ ├── synchronization.go
│ │ │ │ └── types.go
│ │ └── gomega
│ │ │ ├── .gitignore
│ │ │ ├── .travis.yml
│ │ │ ├── CHANGELOG.md
│ │ │ ├── CONTRIBUTING.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── RELEASING.md
│ │ │ ├── format
│ │ │ └── format.go
│ │ │ ├── gomega_dsl.go
│ │ │ ├── internal
│ │ │ ├── assertion
│ │ │ │ └── assertion.go
│ │ │ ├── asyncassertion
│ │ │ │ └── async_assertion.go
│ │ │ ├── oraclematcher
│ │ │ │ └── oracle_matcher.go
│ │ │ └── testingtsupport
│ │ │ │ └── testing_t_support.go
│ │ │ ├── matchers.go
│ │ │ ├── matchers
│ │ │ ├── and.go
│ │ │ ├── assignable_to_type_of_matcher.go
│ │ │ ├── attributes_slice.go
│ │ │ ├── be_a_directory.go
│ │ │ ├── be_a_regular_file.go
│ │ │ ├── be_an_existing_file.go
│ │ │ ├── be_closed_matcher.go
│ │ │ ├── be_empty_matcher.go
│ │ │ ├── be_equivalent_to_matcher.go
│ │ │ ├── be_false_matcher.go
│ │ │ ├── be_identical_to.go
│ │ │ ├── be_nil_matcher.go
│ │ │ ├── be_numerically_matcher.go
│ │ │ ├── be_sent_matcher.go
│ │ │ ├── be_temporally_matcher.go
│ │ │ ├── be_true_matcher.go
│ │ │ ├── be_zero_matcher.go
│ │ │ ├── consist_of.go
│ │ │ ├── contain_element_matcher.go
│ │ │ ├── contain_substring_matcher.go
│ │ │ ├── equal_matcher.go
│ │ │ ├── have_cap_matcher.go
│ │ │ ├── have_key_matcher.go
│ │ │ ├── have_key_with_value_matcher.go
│ │ │ ├── have_len_matcher.go
│ │ │ ├── have_occurred_matcher.go
│ │ │ ├── have_prefix_matcher.go
│ │ │ ├── have_suffix_matcher.go
│ │ │ ├── match_error_matcher.go
│ │ │ ├── match_json_matcher.go
│ │ │ ├── match_regexp_matcher.go
│ │ │ ├── match_xml_matcher.go
│ │ │ ├── match_yaml_matcher.go
│ │ │ ├── not.go
│ │ │ ├── or.go
│ │ │ ├── panic_matcher.go
│ │ │ ├── receive_matcher.go
│ │ │ ├── succeed_matcher.go
│ │ │ ├── support
│ │ │ │ └── goraph
│ │ │ │ │ ├── bipartitegraph
│ │ │ │ │ ├── bipartitegraph.go
│ │ │ │ │ └── bipartitegraphmatching.go
│ │ │ │ │ ├── edge
│ │ │ │ │ └── edge.go
│ │ │ │ │ ├── node
│ │ │ │ │ └── node.go
│ │ │ │ │ └── util
│ │ │ │ │ └── util.go
│ │ │ ├── type_support.go
│ │ │ └── with_transform.go
│ │ │ └── types
│ │ │ └── types.go
│ ├── samuel
│ │ └── go-zookeeper
│ │ │ ├── LICENSE
│ │ │ └── zk
│ │ │ ├── conn.go
│ │ │ ├── constants.go
│ │ │ ├── dnshostprovider.go
│ │ │ ├── flw.go
│ │ │ ├── lock.go
│ │ │ ├── server_help.go
│ │ │ ├── server_java.go
│ │ │ ├── structs.go
│ │ │ └── util.go
│ └── spaolacci
│ │ └── murmur3
│ │ ├── .gitignore
│ │ ├── .travis.yml
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── murmur.go
│ │ ├── murmur128.go
│ │ ├── murmur32.go
│ │ └── murmur64.go
├── golang.org
│ └── x
│ │ ├── net
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ └── html
│ │ │ ├── atom
│ │ │ ├── atom.go
│ │ │ ├── gen.go
│ │ │ └── table.go
│ │ │ ├── charset
│ │ │ └── charset.go
│ │ │ ├── const.go
│ │ │ ├── doc.go
│ │ │ ├── doctype.go
│ │ │ ├── entity.go
│ │ │ ├── escape.go
│ │ │ ├── foreign.go
│ │ │ ├── node.go
│ │ │ ├── parse.go
│ │ │ ├── render.go
│ │ │ └── token.go
│ │ ├── sys
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ └── unix
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── affinity_linux.go
│ │ │ ├── asm_darwin_386.s
│ │ │ ├── asm_darwin_amd64.s
│ │ │ ├── asm_darwin_arm.s
│ │ │ ├── asm_darwin_arm64.s
│ │ │ ├── asm_dragonfly_amd64.s
│ │ │ ├── asm_freebsd_386.s
│ │ │ ├── asm_freebsd_amd64.s
│ │ │ ├── asm_freebsd_arm.s
│ │ │ ├── asm_linux_386.s
│ │ │ ├── asm_linux_amd64.s
│ │ │ ├── asm_linux_arm.s
│ │ │ ├── asm_linux_arm64.s
│ │ │ ├── asm_linux_mips64x.s
│ │ │ ├── asm_linux_mipsx.s
│ │ │ ├── asm_linux_ppc64x.s
│ │ │ ├── asm_linux_s390x.s
│ │ │ ├── asm_netbsd_386.s
│ │ │ ├── asm_netbsd_amd64.s
│ │ │ ├── asm_netbsd_arm.s
│ │ │ ├── asm_openbsd_386.s
│ │ │ ├── asm_openbsd_amd64.s
│ │ │ ├── asm_openbsd_arm.s
│ │ │ ├── asm_solaris_amd64.s
│ │ │ ├── bluetooth_linux.go
│ │ │ ├── cap_freebsd.go
│ │ │ ├── constants.go
│ │ │ ├── dev_darwin.go
│ │ │ ├── dev_dragonfly.go
│ │ │ ├── dev_freebsd.go
│ │ │ ├── dev_linux.go
│ │ │ ├── dev_netbsd.go
│ │ │ ├── dev_openbsd.go
│ │ │ ├── dirent.go
│ │ │ ├── endian_big.go
│ │ │ ├── endian_little.go
│ │ │ ├── env_unix.go
│ │ │ ├── errors_freebsd_386.go
│ │ │ ├── errors_freebsd_amd64.go
│ │ │ ├── errors_freebsd_arm.go
│ │ │ ├── fcntl.go
│ │ │ ├── fcntl_linux_32bit.go
│ │ │ ├── gccgo.go
│ │ │ ├── gccgo_c.c
│ │ │ ├── gccgo_linux_amd64.go
│ │ │ ├── mkall.sh
│ │ │ ├── mkerrors.sh
│ │ │ ├── mkpost.go
│ │ │ ├── mksyscall.pl
│ │ │ ├── mksyscall_solaris.pl
│ │ │ ├── mksysctl_openbsd.pl
│ │ │ ├── mksysnum_darwin.pl
│ │ │ ├── mksysnum_dragonfly.pl
│ │ │ ├── mksysnum_freebsd.pl
│ │ │ ├── mksysnum_netbsd.pl
│ │ │ ├── mksysnum_openbsd.pl
│ │ │ ├── openbsd_pledge.go
│ │ │ ├── pagesize_unix.go
│ │ │ ├── race.go
│ │ │ ├── race0.go
│ │ │ ├── sockcmsg_linux.go
│ │ │ ├── sockcmsg_unix.go
│ │ │ ├── str.go
│ │ │ ├── syscall.go
│ │ │ ├── syscall_bsd.go
│ │ │ ├── syscall_darwin.go
│ │ │ ├── syscall_darwin_386.go
│ │ │ ├── syscall_darwin_amd64.go
│ │ │ ├── syscall_darwin_arm.go
│ │ │ ├── syscall_darwin_arm64.go
│ │ │ ├── syscall_dragonfly.go
│ │ │ ├── syscall_dragonfly_amd64.go
│ │ │ ├── syscall_freebsd.go
│ │ │ ├── syscall_freebsd_386.go
│ │ │ ├── syscall_freebsd_amd64.go
│ │ │ ├── syscall_freebsd_arm.go
│ │ │ ├── syscall_linux.go
│ │ │ ├── syscall_linux_386.go
│ │ │ ├── syscall_linux_amd64.go
│ │ │ ├── syscall_linux_amd64_gc.go
│ │ │ ├── syscall_linux_arm.go
│ │ │ ├── syscall_linux_arm64.go
│ │ │ ├── syscall_linux_gc.go
│ │ │ ├── syscall_linux_gccgo.go
│ │ │ ├── syscall_linux_mips64x.go
│ │ │ ├── syscall_linux_mipsx.go
│ │ │ ├── syscall_linux_ppc64x.go
│ │ │ ├── syscall_linux_s390x.go
│ │ │ ├── syscall_linux_sparc64.go
│ │ │ ├── syscall_netbsd.go
│ │ │ ├── syscall_netbsd_386.go
│ │ │ ├── syscall_netbsd_amd64.go
│ │ │ ├── syscall_netbsd_arm.go
│ │ │ ├── syscall_openbsd.go
│ │ │ ├── syscall_openbsd_386.go
│ │ │ ├── syscall_openbsd_amd64.go
│ │ │ ├── syscall_openbsd_arm.go
│ │ │ ├── syscall_solaris.go
│ │ │ ├── syscall_solaris_amd64.go
│ │ │ ├── syscall_unix.go
│ │ │ ├── syscall_unix_gc.go
│ │ │ ├── timestruct.go
│ │ │ ├── types_darwin.go
│ │ │ ├── types_dragonfly.go
│ │ │ ├── types_freebsd.go
│ │ │ ├── types_netbsd.go
│ │ │ ├── types_openbsd.go
│ │ │ ├── types_solaris.go
│ │ │ ├── zerrors_darwin_386.go
│ │ │ ├── zerrors_darwin_amd64.go
│ │ │ ├── zerrors_darwin_arm.go
│ │ │ ├── zerrors_darwin_arm64.go
│ │ │ ├── zerrors_dragonfly_amd64.go
│ │ │ ├── zerrors_freebsd_386.go
│ │ │ ├── zerrors_freebsd_amd64.go
│ │ │ ├── zerrors_freebsd_arm.go
│ │ │ ├── zerrors_linux_386.go
│ │ │ ├── zerrors_linux_amd64.go
│ │ │ ├── zerrors_linux_arm.go
│ │ │ ├── zerrors_linux_arm64.go
│ │ │ ├── zerrors_linux_mips.go
│ │ │ ├── zerrors_linux_mips64.go
│ │ │ ├── zerrors_linux_mips64le.go
│ │ │ ├── zerrors_linux_mipsle.go
│ │ │ ├── zerrors_linux_ppc64.go
│ │ │ ├── zerrors_linux_ppc64le.go
│ │ │ ├── zerrors_linux_s390x.go
│ │ │ ├── zerrors_linux_sparc64.go
│ │ │ ├── zerrors_netbsd_386.go
│ │ │ ├── zerrors_netbsd_amd64.go
│ │ │ ├── zerrors_netbsd_arm.go
│ │ │ ├── zerrors_openbsd_386.go
│ │ │ ├── zerrors_openbsd_amd64.go
│ │ │ ├── zerrors_openbsd_arm.go
│ │ │ ├── zerrors_solaris_amd64.go
│ │ │ ├── zptrace386_linux.go
│ │ │ ├── zptracearm_linux.go
│ │ │ ├── zptracemips_linux.go
│ │ │ ├── zptracemipsle_linux.go
│ │ │ ├── zsyscall_darwin_386.go
│ │ │ ├── zsyscall_darwin_amd64.go
│ │ │ ├── zsyscall_darwin_arm.go
│ │ │ ├── zsyscall_darwin_arm64.go
│ │ │ ├── zsyscall_dragonfly_amd64.go
│ │ │ ├── zsyscall_freebsd_386.go
│ │ │ ├── zsyscall_freebsd_amd64.go
│ │ │ ├── zsyscall_freebsd_arm.go
│ │ │ ├── zsyscall_linux_386.go
│ │ │ ├── zsyscall_linux_amd64.go
│ │ │ ├── zsyscall_linux_arm.go
│ │ │ ├── zsyscall_linux_arm64.go
│ │ │ ├── zsyscall_linux_mips.go
│ │ │ ├── zsyscall_linux_mips64.go
│ │ │ ├── zsyscall_linux_mips64le.go
│ │ │ ├── zsyscall_linux_mipsle.go
│ │ │ ├── zsyscall_linux_ppc64.go
│ │ │ ├── zsyscall_linux_ppc64le.go
│ │ │ ├── zsyscall_linux_s390x.go
│ │ │ ├── zsyscall_linux_sparc64.go
│ │ │ ├── zsyscall_netbsd_386.go
│ │ │ ├── zsyscall_netbsd_amd64.go
│ │ │ ├── zsyscall_netbsd_arm.go
│ │ │ ├── zsyscall_openbsd_386.go
│ │ │ ├── zsyscall_openbsd_amd64.go
│ │ │ ├── zsyscall_openbsd_arm.go
│ │ │ ├── zsyscall_solaris_amd64.go
│ │ │ ├── zsysctl_openbsd_386.go
│ │ │ ├── zsysctl_openbsd_amd64.go
│ │ │ ├── zsysctl_openbsd_arm.go
│ │ │ ├── zsysnum_darwin_386.go
│ │ │ ├── zsysnum_darwin_amd64.go
│ │ │ ├── zsysnum_darwin_arm.go
│ │ │ ├── zsysnum_darwin_arm64.go
│ │ │ ├── zsysnum_dragonfly_amd64.go
│ │ │ ├── zsysnum_freebsd_386.go
│ │ │ ├── zsysnum_freebsd_amd64.go
│ │ │ ├── zsysnum_freebsd_arm.go
│ │ │ ├── zsysnum_linux_386.go
│ │ │ ├── zsysnum_linux_amd64.go
│ │ │ ├── zsysnum_linux_arm.go
│ │ │ ├── zsysnum_linux_arm64.go
│ │ │ ├── zsysnum_linux_mips.go
│ │ │ ├── zsysnum_linux_mips64.go
│ │ │ ├── zsysnum_linux_mips64le.go
│ │ │ ├── zsysnum_linux_mipsle.go
│ │ │ ├── zsysnum_linux_ppc64.go
│ │ │ ├── zsysnum_linux_ppc64le.go
│ │ │ ├── zsysnum_linux_s390x.go
│ │ │ ├── zsysnum_linux_sparc64.go
│ │ │ ├── zsysnum_netbsd_386.go
│ │ │ ├── zsysnum_netbsd_amd64.go
│ │ │ ├── zsysnum_netbsd_arm.go
│ │ │ ├── zsysnum_openbsd_386.go
│ │ │ ├── zsysnum_openbsd_amd64.go
│ │ │ ├── zsysnum_openbsd_arm.go
│ │ │ ├── ztypes_darwin_386.go
│ │ │ ├── ztypes_darwin_amd64.go
│ │ │ ├── ztypes_darwin_arm.go
│ │ │ ├── ztypes_darwin_arm64.go
│ │ │ ├── ztypes_dragonfly_amd64.go
│ │ │ ├── ztypes_freebsd_386.go
│ │ │ ├── ztypes_freebsd_amd64.go
│ │ │ ├── ztypes_freebsd_arm.go
│ │ │ ├── ztypes_linux_386.go
│ │ │ ├── ztypes_linux_amd64.go
│ │ │ ├── ztypes_linux_arm.go
│ │ │ ├── ztypes_linux_arm64.go
│ │ │ ├── ztypes_linux_mips.go
│ │ │ ├── ztypes_linux_mips64.go
│ │ │ ├── ztypes_linux_mips64le.go
│ │ │ ├── ztypes_linux_mipsle.go
│ │ │ ├── ztypes_linux_ppc64.go
│ │ │ ├── ztypes_linux_ppc64le.go
│ │ │ ├── ztypes_linux_s390x.go
│ │ │ ├── ztypes_linux_sparc64.go
│ │ │ ├── ztypes_netbsd_386.go
│ │ │ ├── ztypes_netbsd_amd64.go
│ │ │ ├── ztypes_netbsd_arm.go
│ │ │ ├── ztypes_openbsd_386.go
│ │ │ ├── ztypes_openbsd_amd64.go
│ │ │ ├── ztypes_openbsd_arm.go
│ │ │ └── ztypes_solaris_amd64.go
│ │ └── text
│ │ ├── AUTHORS
│ │ ├── CONTRIBUTORS
│ │ ├── LICENSE
│ │ ├── PATENTS
│ │ ├── encoding
│ │ ├── charmap
│ │ │ ├── charmap.go
│ │ │ ├── maketables.go
│ │ │ └── tables.go
│ │ ├── encoding.go
│ │ ├── htmlindex
│ │ │ ├── gen.go
│ │ │ ├── htmlindex.go
│ │ │ ├── map.go
│ │ │ └── tables.go
│ │ ├── internal
│ │ │ ├── identifier
│ │ │ │ ├── gen.go
│ │ │ │ ├── identifier.go
│ │ │ │ └── mib.go
│ │ │ └── internal.go
│ │ ├── japanese
│ │ │ ├── all.go
│ │ │ ├── eucjp.go
│ │ │ ├── iso2022jp.go
│ │ │ ├── maketables.go
│ │ │ ├── shiftjis.go
│ │ │ └── tables.go
│ │ ├── korean
│ │ │ ├── euckr.go
│ │ │ ├── maketables.go
│ │ │ └── tables.go
│ │ ├── simplifiedchinese
│ │ │ ├── all.go
│ │ │ ├── gbk.go
│ │ │ ├── hzgb2312.go
│ │ │ ├── maketables.go
│ │ │ └── tables.go
│ │ ├── traditionalchinese
│ │ │ ├── big5.go
│ │ │ ├── maketables.go
│ │ │ └── tables.go
│ │ └── unicode
│ │ │ ├── override.go
│ │ │ └── unicode.go
│ │ ├── internal
│ │ ├── gen
│ │ │ ├── code.go
│ │ │ └── gen.go
│ │ ├── tag
│ │ │ └── tag.go
│ │ └── utf8internal
│ │ │ └── utf8internal.go
│ │ ├── language
│ │ ├── Makefile
│ │ ├── common.go
│ │ ├── coverage.go
│ │ ├── doc.go
│ │ ├── gen.go
│ │ ├── gen_common.go
│ │ ├── gen_index.go
│ │ ├── go1_1.go
│ │ ├── go1_2.go
│ │ ├── index.go
│ │ ├── language.go
│ │ ├── lookup.go
│ │ ├── match.go
│ │ ├── parse.go
│ │ ├── tables.go
│ │ └── tags.go
│ │ ├── runes
│ │ ├── cond.go
│ │ └── runes.go
│ │ ├── transform
│ │ └── transform.go
│ │ └── unicode
│ │ └── cldr
│ │ ├── base.go
│ │ ├── cldr.go
│ │ ├── collate.go
│ │ ├── decode.go
│ │ ├── makexml.go
│ │ ├── resolve.go
│ │ ├── slice.go
│ │ └── xml.go
└── gopkg.in
│ └── yaml.v2
│ ├── .travis.yml
│ ├── LICENSE
│ ├── LICENSE.libyaml
│ ├── NOTICE
│ ├── README.md
│ ├── apic.go
│ ├── decode.go
│ ├── emitterc.go
│ ├── encode.go
│ ├── go.mod
│ ├── parserc.go
│ ├── readerc.go
│ ├── resolve.go
│ ├── scannerc.go
│ ├── sorter.go
│ ├── writerc.go
│ ├── yaml.go
│ ├── yamlh.go
│ └── yamlprivateh.go
└── zookeeper.go
/.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 | *.test
24 | *.prof
25 | .DSStore
26 |
27 | *.log
28 | .vscode
29 | .idea
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | sudo: required
2 |
3 | language: go
4 | go:
5 | - 1.8.x
6 | - 1.9
7 |
8 | env:
9 | - DOCKER_COMPOSE_VERSION=1.21.1
10 |
11 | services:
12 | - docker
13 |
14 | before_install:
15 | - sudo rm /usr/local/bin/docker-compose
16 | - curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
17 | - chmod +x docker-compose
18 | - sudo mv docker-compose /usr/local/bin
19 |
20 | script:
21 | - ./bin/travis-tests
22 |
23 | after_script:
24 | - docker-compose down
25 |
26 | notifications:
27 | email:
28 | recipients:
29 | - team-mcon-engineers+gosolr@sendgrid.com
30 | - team-mcrwc-engineers+gosolr@sendgrid.com
31 | - shawn.feldman@sendgrid.com
32 | on_success: never # default: change
33 | on_failure: always # default: always
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | FROM golang:1.8.1
2 | COPY ./vendor /go/src/
3 | RUN go get github.com/onsi/ginkgo
4 | RUN go get github.com/onsi/gomega
5 | WORKDIR /go/src/github.com/sendgrid/go-solr
--------------------------------------------------------------------------------
/Gopkg.toml:
--------------------------------------------------------------------------------
1 | # Gopkg.toml example
2 | #
3 | # Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
4 | # for detailed Gopkg.toml documentation.
5 | #
6 | # required = ["github.com/user/thing/cmd/thing"]
7 | # ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
8 | #
9 | # [[constraint]]
10 | # name = "github.com/user/project"
11 | # version = "1.0.0"
12 | #
13 | # [[constraint]]
14 | # name = "github.com/user/project2"
15 | # branch = "dev"
16 | # source = "github.com/myfork/project2"
17 | #
18 | # [[override]]
19 | # name = "github.com/x/y"
20 | # version = "2.4.0"
21 | #
22 | # [prune]
23 | # non-go = false
24 | # go-tests = true
25 | # unused-packages = true
26 |
27 |
28 | [[constraint]]
29 | name = "github.com/onsi/ginkgo"
30 | version = "1.5.0"
31 |
32 | [[constraint]]
33 | name = "github.com/onsi/gomega"
34 | version = "1.4.0"
35 |
36 | [[constraint]]
37 | branch = "master"
38 | name = "github.com/samuel/go-zookeeper"
39 |
40 | [[constraint]]
41 | name = "github.com/spaolacci/murmur3"
42 | version = "1.1.0"
43 |
44 | [prune]
45 | go-tests = true
46 | unused-packages = true
47 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 SendGrid
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 |
--------------------------------------------------------------------------------
/adaptiveRouter_test.go:
--------------------------------------------------------------------------------
1 | package solr_test
2 |
3 | import (
4 | "errors"
5 | "github.com/sendgrid/go-solr"
6 | "net/http"
7 | "time"
8 |
9 | . "github.com/onsi/ginkgo"
10 | . "github.com/onsi/gomega"
11 | )
12 |
13 | var _ = Describe("Adaptive Router", func() {
14 | Describe("Test Routing on errors", func() {
15 | It("routes to best node", func() {
16 | r := solr.NewAdaptiveRouter(1)
17 | r.AddSearchResult(time.Second, "http://err.foo.bar", http.StatusOK, errors.New("err"))
18 | r.AddSearchResult(time.Second, "http://internal-err.foo.bar", http.StatusInternalServerError, errors.New("err"))
19 | r.AddSearchResult(time.Second, "http://foo.bar", http.StatusOK, nil)
20 | uri := r.GetUriFromList([]string{"http://err.foo.bar", "http://internal-err.foo.bar", "http://foo.bar"})
21 | Expect(uri).To(BeEquivalentTo("http://foo.bar"))
22 | })
23 | })
24 |
25 | Describe("Test Routing on latency", func() {
26 | It("routes to fastest node", func() {
27 | r := solr.NewAdaptiveRouter(1)
28 | r.AddSearchResult(time.Second, "http://s.foo.bar", http.StatusOK, nil)
29 | r.AddSearchResult(time.Millisecond, "http://ms.foo.bar", http.StatusOK, nil)
30 | r.AddSearchResult(time.Minute, "http://m.foo.bar", http.StatusOK, nil)
31 | uri := r.GetUriFromList([]string{"http://s.foo.bar", "http://m.foo.bar", "http://ms.foo.bar"})
32 | Expect(uri).To(BeEquivalentTo("http://ms.foo.bar"))
33 | })
34 | })
35 | })
36 |
--------------------------------------------------------------------------------
/bin/schema.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | id
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/bin/solr-tests:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | until curl -sL -w "%{http_code}\\n" "http://solr:admin@solr1:8983/solr/solrtest/select?indent=on&q=*:*&wt=json" -o /dev/null | grep '200'
3 | do
4 | echo "waiting for solr cloud"
5 | sleep 1
6 | done
7 | echo "cloud started"
8 | LN_OUTPUT=stderr go test
9 |
10 |
--------------------------------------------------------------------------------
/bin/start-solr:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | until solr zk ls / -z zk:2181
4 | do
5 | echo "waiting for zookeeper"
6 | sleep 1
7 | done
8 |
9 | solr zk mkroot /solr -z zk:2181
10 |
11 | LN_OUTPUT=stderr solr start -f -v -z zk:2181/solr > /dev/null &
12 |
13 | until curl localhost:8983
14 | do
15 | echo "waiting for solr"
16 | sleep 1
17 | done
18 |
19 | solr zk -upconfig -d /opt/solr/solrtest -n solrtest -z zk:2181/solr
20 | sleep 1
21 | solr create_collection -c solrtest -n solrtest -shards 1 -replicationFactor 3
22 |
23 | /opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost zk:2181/solr -cmd put /security.json '{"authentication": {"class": "solr.BasicAuthPlugin","blockUnknown": true,"credentials": {"solr": "J0IbXqNMOsK6fvu3EseKuMiBiXAeRo51a6OoJBEbPEU= yLhT0cqEvO7CCkBUEZSDBQgTT/50CbfW0WjjC2YZchc="}},"authorization": {"class": "solr.RuleBasedAuthorizationPlugin","permissions": [{"name": "security-edit","role": "admin"}],"user-role": {"solr": "admin"}}}'
24 |
25 | /opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost zk:2181/solr -cmd clusterprop -name urlScheme -val "http"
26 |
27 | for (( ; ; ))
28 | do
29 | tail -f /opt/solr/server/logs/solr.log | grep TOLEADER
30 | done
31 |
--------------------------------------------------------------------------------
/bin/start-zk:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | echo 'maxClientCnxns=0' >> /opt/zookeeper-3.4.6/conf/zoo.cfg
4 | bash /usr/bin/start-zk.sh
5 |
--------------------------------------------------------------------------------
/bin/travis-tests:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | docker-compose -p tests -f docker-compose.travis.yml run gotests /tmp/bin/solr-tests
--------------------------------------------------------------------------------
/clusterState.go:
--------------------------------------------------------------------------------
1 | package solr
2 |
3 | type ClusterState struct {
4 | LiveNodes []string
5 | Version int
6 | Collections map[string]Collection
7 | }
8 |
9 | type Collection struct {
10 | Shards map[string]Shard `json:"shards"`
11 | ReplicationFactor string `json:"replicationFactor"`
12 | }
13 |
14 | type Shard struct {
15 | Name string `json:"-"`
16 | Range string `json:"range"`
17 | State string `json:"state"`
18 | Replicas map[string]Replica `json:"replicas"`
19 | }
20 |
21 | type Replica struct {
22 | Core string `json:"core"`
23 | Leader string `json:"leader"`
24 | BaseURL string `json:"base_url"`
25 | NodeName string `json:"node_name"`
26 | State string `json:"state"`
27 | }
28 |
29 | type SolrHealthcheckResponse struct {
30 | LiveNodes []string `json:"live_nodes"`
31 | DownReplicas []string `json:"down_replicas"`
32 | RecoveryFailedReplicas []string `json:"recovery_failed_replicas"`
33 | }
34 |
--------------------------------------------------------------------------------
/cmd/SolrJLoadTest.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sendgrid/go-solr/1adfda84fa9c7c02fb85f7a10b9d564e99352ee4/cmd/SolrJLoadTest.class
--------------------------------------------------------------------------------
/cmd/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | export LIB1=/opt/solr/dist/solrj-lib
3 | export LIB2=/opt/solr/server/solr-webapp/webapp/WEB-INF/lib
4 | export LIB3=/opt/solr/server/lib/ext/
5 |
6 | for i in /opt/solr/dist/solrj-lib/*.jar
7 | do
8 | CLASSPATH=${CLASSPATH}:${i}
9 | done
10 |
11 | for i in /opt/solr/server/solr-webapp/webapp/WEB-INF/lib/*.jar
12 | do
13 | CLASSPATH=${CLASSPATH}:${i}
14 | done
15 |
16 | for i in /opt/solr/server/lib/ext/*.jar
17 | do
18 | CLASSPATH=${CLASSPATH}:${i}
19 | done
20 |
21 | CLASSPATH=.:$CLASSPATH:.
22 | # echo $CLASSPATH
23 | javac -cp $CLASSPATH *.java
24 |
25 | java -cp $CLASSPATH SolrJLoadTest
--------------------------------------------------------------------------------
/cmd/solr-solrj-6.4.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sendgrid/go-solr/1adfda84fa9c7c02fb85f7a10b9d564e99352ee4/cmd/solr-solrj-6.4.2.jar
--------------------------------------------------------------------------------
/docker-compose.cluster.yml:
--------------------------------------------------------------------------------
1 | version: '2.0'
2 |
3 | services:
4 | zk:
5 | image: wurstmeister/zookeeper
6 | volumes:
7 | - "./bin:/tmp/bin"
8 | command: /tmp/bin/start-zk
9 |
10 | solr1:
11 | image: solr:6.6.4
12 | command: "/opt/solr/solrtest/start-solr cluster"
13 | ports:
14 | - "8981:8983"
15 | volumes:
16 | - "./bin:/opt/solr/solrtest:rw"
17 |
18 | solr2:
19 | image: solr:6.6.4
20 | command: "/opt/solr/solrtest/start-solr cluster"
21 | ports:
22 | - "8982:8983"
23 | volumes:
24 | - "./bin:/opt/solr/solrtest:rw"
25 |
26 | solr3:
27 | image: solr:6.6.4
28 | command: "/opt/solr/solrtest/start-solr cluster"
29 | ports:
30 | - "8983:8983"
31 | volumes:
32 | - "./bin:/opt/solr/solrtest:rw"
33 |
34 | gotests:
35 | build: .
36 | command: /tmp/bin/solr-tests
37 | volumes:
38 | - ".:/go/src/github.com/sendgrid/go-solr:rw"
39 | - "./bin:/tmp/bin"
40 |
--------------------------------------------------------------------------------
/docker-compose.travis.yml:
--------------------------------------------------------------------------------
1 | zk:
2 | image: wurstmeister/zookeeper
3 |
4 | volumes:
5 | - "./bin:/tmp/bin"
6 | command: /tmp/bin/start-zk
7 |
8 | solr1:
9 | image: solr:6.6.0
10 | ports:
11 | - "7983:8983"
12 | command: "/opt/solr/solrtest/start-solr"
13 | links:
14 | - zk
15 | volumes:
16 | - "./bin:/opt/solr/solrtest:rw"
17 |
18 | gotests:
19 | build: .
20 | command: /tmp/bin/solr-tests
21 | links:
22 | - zk
23 | - solr1
24 | volumes:
25 | - ".:/go/src/github.com/sendgrid/go-solr:rw"
26 | - "./bin:/tmp/bin"
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '2.0'
2 |
3 | services:
4 | zk:
5 | image: wurstmeister/zookeeper
6 |
7 | volumes:
8 | - "./bin:/tmp/bin"
9 | command: /tmp/bin/start-zk
10 |
11 | solr1:
12 | image: solr:6.6.0
13 | ports:
14 | - "7983:8983"
15 | command: "/opt/solr/solrtest/start-solr"
16 | volumes:
17 | - "./bin:/opt/solr/solrtest:rw"
18 |
19 | gotests:
20 | build: .
21 | command: /tmp/bin/solr-tests
22 | volumes:
23 | - ".:/go/src/github.com/sendgrid/go-solr:rw"
24 | - "./bin:/tmp/bin"
25 |
--------------------------------------------------------------------------------
/hash.go:
--------------------------------------------------------------------------------
1 | package solr
2 |
3 | import (
4 | "github.com/spaolacci/murmur3"
5 | "strconv"
6 | "strings"
7 | )
8 |
9 | func Hash(key CompositeKey) int32 {
10 | mask := 32 - key.Bits
11 | mask0 := int32(-1 << mask)
12 | mask1 := int32(-1 ^ mask0)
13 |
14 | hashes := make([]int32, 2)
15 | hashes[0] = int32(murmur3.Sum32([]byte(key.ShardKey)))
16 | if key.DocID != "" {
17 | hashes[1] = int32(murmur3.Sum32([]byte(key.DocID)))
18 | } else {
19 | hashes[1] = int32(0)
20 | }
21 | return (hashes[0] & mask0) | (hashes[1] & mask1)
22 | }
23 |
24 | func ConvertToHashRange(hashRange string) (HashRange, error) {
25 | ranges := strings.Split(hashRange, "-")
26 | var rangeReturn HashRange
27 | if len(ranges) == 2 {
28 | low, err := strconv.ParseInt(ranges[0], 16, 64)
29 | if err != nil {
30 | return rangeReturn, err
31 | }
32 | rangeReturn.Low = int32(low)
33 | high, err := strconv.ParseInt(ranges[1], 16, 64)
34 | if err != nil {
35 | return rangeReturn, err
36 | }
37 | rangeReturn.High = int32(high)
38 | }
39 | return rangeReturn, nil
40 | }
41 |
--------------------------------------------------------------------------------
/hash_test.go:
--------------------------------------------------------------------------------
1 | package solr
2 |
3 | import (
4 | . "github.com/onsi/ginkgo"
5 | . "github.com/onsi/gomega"
6 | )
7 |
8 | var _ = Describe("Hash Functions", func() {
9 | Describe("Hash with Doc ID", func() {
10 | It("is created", func() {
11 | expected := int32(-1530629653)
12 | c := CompositeKey{
13 | ShardKey: "foobar",
14 | DocID: "123",
15 | Bits: 16,
16 | }
17 | hash := Hash(c)
18 | Expect(hash).To(BeEquivalentTo(expected))
19 | })
20 | })
21 | Describe("Hash without Doc ID", func() {
22 | It("is created", func() {
23 | expected := int32(-1530658816)
24 | c := CompositeKey{
25 | ShardKey: "foobar",
26 | Bits: 16,
27 | }
28 | hash := Hash(c)
29 | Expect(hash).To(BeEquivalentTo(expected))
30 | })
31 | })
32 | })
33 |
--------------------------------------------------------------------------------
/makefile:
--------------------------------------------------------------------------------
1 | target: ;
--------------------------------------------------------------------------------
/roundRobinRouter.go:
--------------------------------------------------------------------------------
1 | package solr
2 |
3 | import (
4 | "sync"
5 | "time"
6 | )
7 |
8 | type Router interface {
9 | GetUriFromList(urisIn []string) string
10 | AddSearchResult(t time.Duration, uri string, statusCode int, err error)
11 | }
12 |
13 | type roundRobinRouter struct {
14 | lastQuery map[string]time.Time
15 | lock *sync.RWMutex
16 | }
17 |
18 | func (r *roundRobinRouter) GetUriFromList(urisIn []string) string {
19 | r.lock.Lock()
20 | defer r.lock.Unlock()
21 | var oldestValue time.Time
22 | var result string
23 | for _, uri := range urisIn {
24 | if v, ok := r.lastQuery[uri]; !ok {
25 | result = uri
26 | break
27 | } else if (oldestValue == time.Time{}) || v.Before(oldestValue) {
28 | oldestValue = v
29 | result = uri
30 | }
31 | }
32 | r.lastQuery[result] = time.Now()
33 | return result
34 | }
35 |
36 | func (r *roundRobinRouter) AddSearchResult(t time.Duration, uri string, statusCode int, err error) {
37 | //no-op, updated on GetUriFromList
38 | }
39 |
40 | func NewRoundRobinRouter() Router {
41 | return &roundRobinRouter{lock: &sync.RWMutex{}, lastQuery: make(map[string]time.Time)}
42 | }
43 |
--------------------------------------------------------------------------------
/roundRobinRouter_test.go:
--------------------------------------------------------------------------------
1 | package solr_test
2 |
3 | import (
4 | . "github.com/onsi/ginkgo"
5 | . "github.com/onsi/gomega"
6 | "github.com/sendgrid/go-solr"
7 | "net/http"
8 | "time"
9 | )
10 |
11 | var _ = Describe("Round Robin Router", func() {
12 | Describe("Test Routing", func() {
13 | It("routes to next node", func() {
14 | r := solr.NewRoundRobinRouter()
15 | r.AddSearchResult(time.Second, "http://a.foo.bar", http.StatusOK, nil)
16 | r.AddSearchResult(time.Second, "http://b.foo.bar", http.StatusOK, nil)
17 | r.AddSearchResult(time.Second, "http://c.foo.bar", http.StatusOK, nil)
18 | uriA1 := r.GetUriFromList([]string{"http://a.foo.bar", "http://b.foo.bar", "http://c.foo.bar"})
19 | Expect(uriA1).To(BeEquivalentTo("http://a.foo.bar"))
20 | uriB1 := r.GetUriFromList([]string{"http://a.foo.bar", "http://b.foo.bar", "http://c.foo.bar"})
21 | Expect(uriB1).To(BeEquivalentTo("http://b.foo.bar"))
22 | uriC1 := r.GetUriFromList([]string{"http://a.foo.bar", "http://b.foo.bar", "http://c.foo.bar"})
23 | Expect(uriC1).To(BeEquivalentTo("http://c.foo.bar"))
24 | uriA2 := r.GetUriFromList([]string{"http://a.foo.bar", "http://b.foo.bar", "http://c.foo.bar"})
25 | Expect(uriA2).To(BeEquivalentTo("http://a.foo.bar"))
26 | })
27 | })
28 | })
29 |
--------------------------------------------------------------------------------
/solrResponse.go:
--------------------------------------------------------------------------------
1 | package solr
2 |
3 | type SolrResponse struct {
4 | Status int `json:"status"`
5 | QTime int `json:"qtime"`
6 | Params struct {
7 | Query string `json:"q"`
8 | Indent string `json:"indent"`
9 | Wt string `json:"wt"`
10 | } `json:"params"`
11 | Response Response `json:"response"`
12 | NextCursorMark string `json:"nextCursorMark"`
13 | Adds Adds `json:"adds"`
14 | }
15 |
16 | type Response struct {
17 | NumFound uint32 `json:"numFound"`
18 | Start int `json:"start"`
19 | Docs []map[string]interface{} `json:"docs"`
20 | }
21 |
22 | func GetDocIdFromDoc(m map[string]interface{}) string {
23 | if v, ok := m["id"]; ok {
24 | return v.(string)
25 | }
26 | return ""
27 | }
28 |
29 | func GetVersionFromDoc(m map[string]interface{}) int {
30 | if v, ok := m["_version_"]; ok {
31 | switch v := v.(type) {
32 | case float64:
33 | return int(v)
34 | case int:
35 | return v
36 | }
37 | }
38 |
39 | return 0
40 | }
41 |
42 | type Adds map[string]int
43 |
44 | type UpdateResponse struct {
45 | Response struct {
46 | Status int `json:"status"`
47 | QTime int `json:"QTime"`
48 | RF int `json:"rf"`
49 | MinRF int `json:"min_rf"`
50 | } `json:"responseHeader"`
51 | Error struct {
52 | Metadata []string `json:"metadata"`
53 | Msg string `json:"msg"`
54 | Code int `json:"code"`
55 | }
56 | }
57 |
58 | type DeleteRequest struct {
59 | Delete []string `json:"delete"`
60 | }
61 |
--------------------------------------------------------------------------------
/solr_go_suite_test.go:
--------------------------------------------------------------------------------
1 | package solr_test
2 |
3 | import (
4 | . "github.com/onsi/ginkgo"
5 | . "github.com/onsi/gomega"
6 | "testing"
7 | )
8 |
9 | func TestSolrGo(t *testing.T) {
10 | RegisterFailHandler(Fail)
11 | RunSpecs(t, "SolrGo Suite")
12 | }
13 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | TODO
3 | tmp/**/*
4 | *.coverprofile
5 | .vscode
6 | .idea/
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 | go:
3 | - 1.6.x
4 | - 1.7.x
5 | - 1.8.x
6 | - 1.9.x
7 | - 1.10.x
8 |
9 | install:
10 | - go get -v -t ./...
11 | - go get golang.org/x/tools/cmd/cover
12 | - go get github.com/onsi/gomega
13 | - go install github.com/onsi/ginkgo/ginkgo
14 | - export PATH=$PATH:$HOME/gopath/bin
15 |
16 | script: $HOME/gopath/bin/ginkgo -r --randomizeAllSpecs --randomizeSuites --race --trace && go vet
17 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to Ginkgo
2 |
3 | Your contributions to Ginkgo are essential for its long-term maintenance and improvement. To make a contribution:
4 |
5 | - Please **open an issue first** - describe what problem you are trying to solve and give the community a forum for input and feedback ahead of investing time in writing code!
6 | - Ensure adequate test coverage:
7 | - If you're adding functionality to the Ginkgo library, make sure to add appropriate unit and/or integration tests (under the `integration` folder).
8 | - If you're adding functionality to the Ginkgo CLI note that there are very few unit tests. Please add an integration test.
9 | - Please run all tests locally (`ginkgo -r -p`) and make sure they go green before submitting the PR
10 | - Please run following linter locally `go vet ./...` and make sure output does not contain any warnings
11 | - Update the documentation. In addition to standard `godoc` comments Ginkgo has extensive documentation on the `gh-pages` branch. If relevant, please submit a docs PR to that branch alongside your code PR.
12 |
13 | Thanks for supporting Ginkgo!
14 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2014 Onsi Fakhouri
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/RELEASING.md:
--------------------------------------------------------------------------------
1 | A Ginkgo release is a tagged git sha and a GitHub release. To cut a release:
2 |
3 | 1. Ensure CHANGELOG.md is up to date.
4 | - Use `git log --pretty=format:'- %s [%h]' HEAD...vX.X.X` to list all the commits since the last release
5 | - Categorize the changes into
6 | - Breaking Changes (requires a major version)
7 | - New Features (minor version)
8 | - Fixes (fix version)
9 | - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact)
10 | 1. Update `VERSION` in `config/config.go`
11 | 1. Create a commit with the version number as the commit message (e.g. `v1.3.0`)
12 | 1. Tag the commit with the version number as the tag name (e.g. `v1.3.0`)
13 | 1. Push the commit and tag to GitHub
14 | 1. Create a new [GitHub release](https://help.github.com/articles/creating-releases/) with the version number as the tag (e.g. `v1.3.0`). List the key changes in the release notes.
15 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/before_pr.sh:
--------------------------------------------------------------------------------
1 | # Take current path
2 | path=$(pwd)
3 |
4 | # Split it
5 | IFS='\/'; arrIN=($path); unset IFS;
6 |
7 | # Find directory before ginkgo
8 | len=${#arrIN[@]}
9 |
10 | userDir=${arrIN[$len-2]}
11 |
12 | # Replace onsi with userdir
13 | find . -type f -name '*.go' -exec sed -i '' s/github.com\\/onsi\\/ginkgo\\/internal/github.com\\/$userDir\\/ginkgo\\/internal/ {} +
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/codelocation/code_location.go:
--------------------------------------------------------------------------------
1 | package codelocation
2 |
3 | import (
4 | "regexp"
5 | "runtime"
6 | "runtime/debug"
7 | "strings"
8 |
9 | "github.com/onsi/ginkgo/types"
10 | )
11 |
12 | func New(skip int) types.CodeLocation {
13 | _, file, line, _ := runtime.Caller(skip + 1)
14 | stackTrace := PruneStack(string(debug.Stack()), skip)
15 | return types.CodeLocation{FileName: file, LineNumber: line, FullStackTrace: stackTrace}
16 | }
17 |
18 | func PruneStack(fullStackTrace string, skip int) string {
19 | stack := strings.Split(fullStackTrace, "\n")
20 | if len(stack) > 2*(skip+1) {
21 | stack = stack[2*(skip+1):]
22 | }
23 | prunedStack := []string{}
24 | re := regexp.MustCompile(`\/ginkgo\/|\/pkg\/testing\/|\/pkg\/runtime\/`)
25 | for i := 0; i < len(stack)/2; i++ {
26 | if !re.Match([]byte(stack[i*2])) {
27 | prunedStack = append(prunedStack, stack[i*2])
28 | prunedStack = append(prunedStack, stack[i*2+1])
29 | }
30 | }
31 | return strings.Join(prunedStack, "\n")
32 | }
33 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/leafnodes/interfaces.go:
--------------------------------------------------------------------------------
1 | package leafnodes
2 |
3 | import (
4 | "github.com/onsi/ginkgo/types"
5 | )
6 |
7 | type BasicNode interface {
8 | Type() types.SpecComponentType
9 | Run() (types.SpecState, types.SpecFailure)
10 | CodeLocation() types.CodeLocation
11 | }
12 |
13 | type SubjectNode interface {
14 | BasicNode
15 |
16 | Text() string
17 | Flag() types.FlagType
18 | Samples() int
19 | }
20 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/leafnodes/it_node.go:
--------------------------------------------------------------------------------
1 | package leafnodes
2 |
3 | import (
4 | "time"
5 |
6 | "github.com/onsi/ginkgo/internal/failer"
7 | "github.com/onsi/ginkgo/types"
8 | )
9 |
10 | type ItNode struct {
11 | runner *runner
12 |
13 | flag types.FlagType
14 | text string
15 | }
16 |
17 | func NewItNode(text string, body interface{}, flag types.FlagType, codeLocation types.CodeLocation, timeout time.Duration, failer *failer.Failer, componentIndex int) *ItNode {
18 | return &ItNode{
19 | runner: newRunner(body, codeLocation, timeout, failer, types.SpecComponentTypeIt, componentIndex),
20 | flag: flag,
21 | text: text,
22 | }
23 | }
24 |
25 | func (node *ItNode) Run() (outcome types.SpecState, failure types.SpecFailure) {
26 | return node.runner.run()
27 | }
28 |
29 | func (node *ItNode) Type() types.SpecComponentType {
30 | return types.SpecComponentTypeIt
31 | }
32 |
33 | func (node *ItNode) Text() string {
34 | return node.text
35 | }
36 |
37 | func (node *ItNode) Flag() types.FlagType {
38 | return node.flag
39 | }
40 |
41 | func (node *ItNode) CodeLocation() types.CodeLocation {
42 | return node.runner.codeLocation
43 | }
44 |
45 | func (node *ItNode) Samples() int {
46 | return 1
47 | }
48 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/leafnodes/measure_node.go:
--------------------------------------------------------------------------------
1 | package leafnodes
2 |
3 | import (
4 | "reflect"
5 |
6 | "github.com/onsi/ginkgo/internal/failer"
7 | "github.com/onsi/ginkgo/types"
8 | )
9 |
10 | type MeasureNode struct {
11 | runner *runner
12 |
13 | text string
14 | flag types.FlagType
15 | samples int
16 | benchmarker *benchmarker
17 | }
18 |
19 | func NewMeasureNode(text string, body interface{}, flag types.FlagType, codeLocation types.CodeLocation, samples int, failer *failer.Failer, componentIndex int) *MeasureNode {
20 | benchmarker := newBenchmarker()
21 |
22 | wrappedBody := func() {
23 | reflect.ValueOf(body).Call([]reflect.Value{reflect.ValueOf(benchmarker)})
24 | }
25 |
26 | return &MeasureNode{
27 | runner: newRunner(wrappedBody, codeLocation, 0, failer, types.SpecComponentTypeMeasure, componentIndex),
28 |
29 | text: text,
30 | flag: flag,
31 | samples: samples,
32 | benchmarker: benchmarker,
33 | }
34 | }
35 |
36 | func (node *MeasureNode) Run() (outcome types.SpecState, failure types.SpecFailure) {
37 | return node.runner.run()
38 | }
39 |
40 | func (node *MeasureNode) MeasurementsReport() map[string]*types.SpecMeasurement {
41 | return node.benchmarker.measurementsReport()
42 | }
43 |
44 | func (node *MeasureNode) Type() types.SpecComponentType {
45 | return types.SpecComponentTypeMeasure
46 | }
47 |
48 | func (node *MeasureNode) Text() string {
49 | return node.text
50 | }
51 |
52 | func (node *MeasureNode) Flag() types.FlagType {
53 | return node.flag
54 | }
55 |
56 | func (node *MeasureNode) CodeLocation() types.CodeLocation {
57 | return node.runner.codeLocation
58 | }
59 |
60 | func (node *MeasureNode) Samples() int {
61 | return node.samples
62 | }
63 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/leafnodes/setup_nodes.go:
--------------------------------------------------------------------------------
1 | package leafnodes
2 |
3 | import (
4 | "time"
5 |
6 | "github.com/onsi/ginkgo/internal/failer"
7 | "github.com/onsi/ginkgo/types"
8 | )
9 |
10 | type SetupNode struct {
11 | runner *runner
12 | }
13 |
14 | func (node *SetupNode) Run() (outcome types.SpecState, failure types.SpecFailure) {
15 | return node.runner.run()
16 | }
17 |
18 | func (node *SetupNode) Type() types.SpecComponentType {
19 | return node.runner.nodeType
20 | }
21 |
22 | func (node *SetupNode) CodeLocation() types.CodeLocation {
23 | return node.runner.codeLocation
24 | }
25 |
26 | func NewBeforeEachNode(body interface{}, codeLocation types.CodeLocation, timeout time.Duration, failer *failer.Failer, componentIndex int) *SetupNode {
27 | return &SetupNode{
28 | runner: newRunner(body, codeLocation, timeout, failer, types.SpecComponentTypeBeforeEach, componentIndex),
29 | }
30 | }
31 |
32 | func NewAfterEachNode(body interface{}, codeLocation types.CodeLocation, timeout time.Duration, failer *failer.Failer, componentIndex int) *SetupNode {
33 | return &SetupNode{
34 | runner: newRunner(body, codeLocation, timeout, failer, types.SpecComponentTypeAfterEach, componentIndex),
35 | }
36 | }
37 |
38 | func NewJustBeforeEachNode(body interface{}, codeLocation types.CodeLocation, timeout time.Duration, failer *failer.Failer, componentIndex int) *SetupNode {
39 | return &SetupNode{
40 | runner: newRunner(body, codeLocation, timeout, failer, types.SpecComponentTypeJustBeforeEach, componentIndex),
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/leafnodes/suite_nodes.go:
--------------------------------------------------------------------------------
1 | package leafnodes
2 |
3 | import (
4 | "time"
5 |
6 | "github.com/onsi/ginkgo/internal/failer"
7 | "github.com/onsi/ginkgo/types"
8 | )
9 |
10 | type SuiteNode interface {
11 | Run(parallelNode int, parallelTotal int, syncHost string) bool
12 | Passed() bool
13 | Summary() *types.SetupSummary
14 | }
15 |
16 | type simpleSuiteNode struct {
17 | runner *runner
18 | outcome types.SpecState
19 | failure types.SpecFailure
20 | runTime time.Duration
21 | }
22 |
23 | func (node *simpleSuiteNode) Run(parallelNode int, parallelTotal int, syncHost string) bool {
24 | t := time.Now()
25 | node.outcome, node.failure = node.runner.run()
26 | node.runTime = time.Since(t)
27 |
28 | return node.outcome == types.SpecStatePassed
29 | }
30 |
31 | func (node *simpleSuiteNode) Passed() bool {
32 | return node.outcome == types.SpecStatePassed
33 | }
34 |
35 | func (node *simpleSuiteNode) Summary() *types.SetupSummary {
36 | return &types.SetupSummary{
37 | ComponentType: node.runner.nodeType,
38 | CodeLocation: node.runner.codeLocation,
39 | State: node.outcome,
40 | RunTime: node.runTime,
41 | Failure: node.failure,
42 | }
43 | }
44 |
45 | func NewBeforeSuiteNode(body interface{}, codeLocation types.CodeLocation, timeout time.Duration, failer *failer.Failer) SuiteNode {
46 | return &simpleSuiteNode{
47 | runner: newRunner(body, codeLocation, timeout, failer, types.SpecComponentTypeBeforeSuite, 0),
48 | }
49 | }
50 |
51 | func NewAfterSuiteNode(body interface{}, codeLocation types.CodeLocation, timeout time.Duration, failer *failer.Failer) SuiteNode {
52 | return &simpleSuiteNode{
53 | runner: newRunner(body, codeLocation, timeout, failer, types.SpecComponentTypeAfterSuite, 0),
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor.go:
--------------------------------------------------------------------------------
1 | package remote
2 |
3 | /*
4 | The OutputInterceptor is used by the ForwardingReporter to
5 | intercept and capture all stdin and stderr output during a test run.
6 | */
7 | type OutputInterceptor interface {
8 | StartInterceptingOutput() error
9 | StopInterceptingAndReturnOutput() (string, error)
10 | }
11 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_unix.go:
--------------------------------------------------------------------------------
1 | // +build freebsd openbsd netbsd dragonfly darwin linux solaris
2 |
3 | package remote
4 |
5 | import (
6 | "errors"
7 | "io/ioutil"
8 | "os"
9 | )
10 |
11 | func NewOutputInterceptor() OutputInterceptor {
12 | return &outputInterceptor{}
13 | }
14 |
15 | type outputInterceptor struct {
16 | redirectFile *os.File
17 | intercepting bool
18 | }
19 |
20 | func (interceptor *outputInterceptor) StartInterceptingOutput() error {
21 | if interceptor.intercepting {
22 | return errors.New("Already intercepting output!")
23 | }
24 | interceptor.intercepting = true
25 |
26 | var err error
27 |
28 | interceptor.redirectFile, err = ioutil.TempFile("", "ginkgo-output")
29 | if err != nil {
30 | return err
31 | }
32 |
33 | // Call a function in ./syscall_dup_*.go
34 | // If building for everything other than linux_arm64,
35 | // use a "normal" syscall.Dup2(oldfd, newfd) call. If building for linux_arm64 (which doesn't have syscall.Dup2)
36 | // call syscall.Dup3(oldfd, newfd, 0). They are nearly identical, see: http://linux.die.net/man/2/dup3
37 | syscallDup(int(interceptor.redirectFile.Fd()), 1)
38 | syscallDup(int(interceptor.redirectFile.Fd()), 2)
39 |
40 | return nil
41 | }
42 |
43 | func (interceptor *outputInterceptor) StopInterceptingAndReturnOutput() (string, error) {
44 | if !interceptor.intercepting {
45 | return "", errors.New("Not intercepting output!")
46 | }
47 |
48 | interceptor.redirectFile.Close()
49 | output, err := ioutil.ReadFile(interceptor.redirectFile.Name())
50 | os.Remove(interceptor.redirectFile.Name())
51 |
52 | interceptor.intercepting = false
53 |
54 | return string(output), err
55 | }
56 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/remote/output_interceptor_win.go:
--------------------------------------------------------------------------------
1 | // +build windows
2 |
3 | package remote
4 |
5 | import (
6 | "errors"
7 | )
8 |
9 | func NewOutputInterceptor() OutputInterceptor {
10 | return &outputInterceptor{}
11 | }
12 |
13 | type outputInterceptor struct {
14 | intercepting bool
15 | }
16 |
17 | func (interceptor *outputInterceptor) StartInterceptingOutput() error {
18 | if interceptor.intercepting {
19 | return errors.New("Already intercepting output!")
20 | }
21 | interceptor.intercepting = true
22 |
23 | // not working on windows...
24 |
25 | return nil
26 | }
27 |
28 | func (interceptor *outputInterceptor) StopInterceptingAndReturnOutput() (string, error) {
29 | // not working on windows...
30 | interceptor.intercepting = false
31 |
32 | return "", nil
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/remote/syscall_dup_linux_arm64.go:
--------------------------------------------------------------------------------
1 | // +build linux,arm64
2 |
3 | package remote
4 |
5 | import "syscall"
6 |
7 | // linux_arm64 doesn't have syscall.Dup2 which ginkgo uses, so
8 | // use the nearly identical syscall.Dup3 instead
9 | func syscallDup(oldfd int, newfd int) (err error) {
10 | return syscall.Dup3(oldfd, newfd, 0)
11 | }
12 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/remote/syscall_dup_solaris.go:
--------------------------------------------------------------------------------
1 | // +build solaris
2 |
3 | package remote
4 |
5 | import "golang.org/x/sys/unix"
6 |
7 | func syscallDup(oldfd int, newfd int) (err error) {
8 | return unix.Dup2(oldfd, newfd)
9 | }
10 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/remote/syscall_dup_unix.go:
--------------------------------------------------------------------------------
1 | // +build !linux !arm64
2 | // +build !windows
3 | // +build !solaris
4 |
5 | package remote
6 |
7 | import "syscall"
8 |
9 | func syscallDup(oldfd int, newfd int) (err error) {
10 | return syscall.Dup2(oldfd, newfd)
11 | }
12 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/spec_iterator/index_computer.go:
--------------------------------------------------------------------------------
1 | package spec_iterator
2 |
3 | func ParallelizedIndexRange(length int, parallelTotal int, parallelNode int) (startIndex int, count int) {
4 | if length == 0 {
5 | return 0, 0
6 | }
7 |
8 | // We have more nodes than tests. Trivial case.
9 | if parallelTotal >= length {
10 | if parallelNode > length {
11 | return 0, 0
12 | } else {
13 | return parallelNode - 1, 1
14 | }
15 | }
16 |
17 | // This is the minimum amount of tests that a node will be required to run
18 | minTestsPerNode := length / parallelTotal
19 |
20 | // This is the maximum amount of tests that a node will be required to run
21 | // The algorithm guarantees that this would be equal to at least the minimum amount
22 | // and at most one more
23 | maxTestsPerNode := minTestsPerNode
24 | if length%parallelTotal != 0 {
25 | maxTestsPerNode++
26 | }
27 |
28 | // Number of nodes that will have to run the maximum amount of tests per node
29 | numMaxLoadNodes := length % parallelTotal
30 |
31 | // Number of nodes that precede the current node and will have to run the maximum amount of tests per node
32 | var numPrecedingMaxLoadNodes int
33 | if parallelNode > numMaxLoadNodes {
34 | numPrecedingMaxLoadNodes = numMaxLoadNodes
35 | } else {
36 | numPrecedingMaxLoadNodes = parallelNode - 1
37 | }
38 |
39 | // Number of nodes that precede the current node and will have to run the minimum amount of tests per node
40 | var numPrecedingMinLoadNodes int
41 | if parallelNode <= numMaxLoadNodes {
42 | numPrecedingMinLoadNodes = 0
43 | } else {
44 | numPrecedingMinLoadNodes = parallelNode - numMaxLoadNodes - 1
45 | }
46 |
47 | // Evaluate the test start index and number of tests to run
48 | startIndex = numPrecedingMaxLoadNodes*maxTestsPerNode + numPrecedingMinLoadNodes*minTestsPerNode
49 | if parallelNode > numMaxLoadNodes {
50 | count = minTestsPerNode
51 | } else {
52 | count = maxTestsPerNode
53 | }
54 | return
55 | }
56 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/spec_iterator/parallel_spec_iterator.go:
--------------------------------------------------------------------------------
1 | package spec_iterator
2 |
3 | import (
4 | "encoding/json"
5 | "fmt"
6 | "net/http"
7 |
8 | "github.com/onsi/ginkgo/internal/spec"
9 | )
10 |
11 | type ParallelIterator struct {
12 | specs []*spec.Spec
13 | host string
14 | client *http.Client
15 | }
16 |
17 | func NewParallelIterator(specs []*spec.Spec, host string) *ParallelIterator {
18 | return &ParallelIterator{
19 | specs: specs,
20 | host: host,
21 | client: &http.Client{},
22 | }
23 | }
24 |
25 | func (s *ParallelIterator) Next() (*spec.Spec, error) {
26 | resp, err := s.client.Get(s.host + "/counter")
27 | if err != nil {
28 | return nil, err
29 | }
30 | defer resp.Body.Close()
31 |
32 | if resp.StatusCode != http.StatusOK {
33 | return nil, fmt.Errorf("unexpected status code %d", resp.StatusCode)
34 | }
35 |
36 | var counter Counter
37 | err = json.NewDecoder(resp.Body).Decode(&counter)
38 | if err != nil {
39 | return nil, err
40 | }
41 |
42 | if counter.Index >= len(s.specs) {
43 | return nil, ErrClosed
44 | }
45 |
46 | return s.specs[counter.Index], nil
47 | }
48 |
49 | func (s *ParallelIterator) NumberOfSpecsPriorToIteration() int {
50 | return len(s.specs)
51 | }
52 |
53 | func (s *ParallelIterator) NumberOfSpecsToProcessIfKnown() (int, bool) {
54 | return -1, false
55 | }
56 |
57 | func (s *ParallelIterator) NumberOfSpecsThatWillBeRunIfKnown() (int, bool) {
58 | return -1, false
59 | }
60 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/spec_iterator/serial_spec_iterator.go:
--------------------------------------------------------------------------------
1 | package spec_iterator
2 |
3 | import (
4 | "github.com/onsi/ginkgo/internal/spec"
5 | )
6 |
7 | type SerialIterator struct {
8 | specs []*spec.Spec
9 | index int
10 | }
11 |
12 | func NewSerialIterator(specs []*spec.Spec) *SerialIterator {
13 | return &SerialIterator{
14 | specs: specs,
15 | index: 0,
16 | }
17 | }
18 |
19 | func (s *SerialIterator) Next() (*spec.Spec, error) {
20 | if s.index >= len(s.specs) {
21 | return nil, ErrClosed
22 | }
23 |
24 | spec := s.specs[s.index]
25 | s.index += 1
26 | return spec, nil
27 | }
28 |
29 | func (s *SerialIterator) NumberOfSpecsPriorToIteration() int {
30 | return len(s.specs)
31 | }
32 |
33 | func (s *SerialIterator) NumberOfSpecsToProcessIfKnown() (int, bool) {
34 | return len(s.specs), true
35 | }
36 |
37 | func (s *SerialIterator) NumberOfSpecsThatWillBeRunIfKnown() (int, bool) {
38 | count := 0
39 | for _, s := range s.specs {
40 | if !s.Skipped() && !s.Pending() {
41 | count += 1
42 | }
43 | }
44 | return count, true
45 | }
46 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/spec_iterator/sharded_parallel_spec_iterator.go:
--------------------------------------------------------------------------------
1 | package spec_iterator
2 |
3 | import "github.com/onsi/ginkgo/internal/spec"
4 |
5 | type ShardedParallelIterator struct {
6 | specs []*spec.Spec
7 | index int
8 | maxIndex int
9 | }
10 |
11 | func NewShardedParallelIterator(specs []*spec.Spec, total int, node int) *ShardedParallelIterator {
12 | startIndex, count := ParallelizedIndexRange(len(specs), total, node)
13 |
14 | return &ShardedParallelIterator{
15 | specs: specs,
16 | index: startIndex,
17 | maxIndex: startIndex + count,
18 | }
19 | }
20 |
21 | func (s *ShardedParallelIterator) Next() (*spec.Spec, error) {
22 | if s.index >= s.maxIndex {
23 | return nil, ErrClosed
24 | }
25 |
26 | spec := s.specs[s.index]
27 | s.index += 1
28 | return spec, nil
29 | }
30 |
31 | func (s *ShardedParallelIterator) NumberOfSpecsPriorToIteration() int {
32 | return len(s.specs)
33 | }
34 |
35 | func (s *ShardedParallelIterator) NumberOfSpecsToProcessIfKnown() (int, bool) {
36 | return s.maxIndex - s.index, true
37 | }
38 |
39 | func (s *ShardedParallelIterator) NumberOfSpecsThatWillBeRunIfKnown() (int, bool) {
40 | count := 0
41 | for i := s.index; i < s.maxIndex; i += 1 {
42 | if !s.specs[i].Skipped() && !s.specs[i].Pending() {
43 | count += 1
44 | }
45 | }
46 | return count, true
47 | }
48 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/spec_iterator/spec_iterator.go:
--------------------------------------------------------------------------------
1 | package spec_iterator
2 |
3 | import (
4 | "errors"
5 |
6 | "github.com/onsi/ginkgo/internal/spec"
7 | )
8 |
9 | var ErrClosed = errors.New("no more specs to run")
10 |
11 | type SpecIterator interface {
12 | Next() (*spec.Spec, error)
13 | NumberOfSpecsPriorToIteration() int
14 | NumberOfSpecsToProcessIfKnown() (int, bool)
15 | NumberOfSpecsThatWillBeRunIfKnown() (int, bool)
16 | }
17 |
18 | type Counter struct {
19 | Index int `json:"index"`
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/specrunner/random_id.go:
--------------------------------------------------------------------------------
1 | package specrunner
2 |
3 | import (
4 | "crypto/rand"
5 | "fmt"
6 | )
7 |
8 | func randomID() string {
9 | b := make([]byte, 8)
10 | _, err := rand.Read(b)
11 | if err != nil {
12 | return ""
13 | }
14 | return fmt.Sprintf("%x-%x-%x-%x", b[0:2], b[2:4], b[4:6], b[6:8])
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/testingtproxy/testing_t_proxy.go:
--------------------------------------------------------------------------------
1 | package testingtproxy
2 |
3 | import (
4 | "fmt"
5 | "io"
6 | )
7 |
8 | type failFunc func(message string, callerSkip ...int)
9 |
10 | func New(writer io.Writer, fail failFunc, offset int) *ginkgoTestingTProxy {
11 | return &ginkgoTestingTProxy{
12 | fail: fail,
13 | offset: offset,
14 | writer: writer,
15 | }
16 | }
17 |
18 | type ginkgoTestingTProxy struct {
19 | fail failFunc
20 | offset int
21 | writer io.Writer
22 | }
23 |
24 | func (t *ginkgoTestingTProxy) Error(args ...interface{}) {
25 | t.fail(fmt.Sprintln(args...), t.offset)
26 | }
27 |
28 | func (t *ginkgoTestingTProxy) Errorf(format string, args ...interface{}) {
29 | t.fail(fmt.Sprintf(format, args...), t.offset)
30 | }
31 |
32 | func (t *ginkgoTestingTProxy) Fail() {
33 | t.fail("failed", t.offset)
34 | }
35 |
36 | func (t *ginkgoTestingTProxy) FailNow() {
37 | t.fail("failed", t.offset)
38 | }
39 |
40 | func (t *ginkgoTestingTProxy) Fatal(args ...interface{}) {
41 | t.fail(fmt.Sprintln(args...), t.offset)
42 | }
43 |
44 | func (t *ginkgoTestingTProxy) Fatalf(format string, args ...interface{}) {
45 | t.fail(fmt.Sprintf(format, args...), t.offset)
46 | }
47 |
48 | func (t *ginkgoTestingTProxy) Log(args ...interface{}) {
49 | fmt.Fprintln(t.writer, args...)
50 | }
51 |
52 | func (t *ginkgoTestingTProxy) Logf(format string, args ...interface{}) {
53 | t.Log(fmt.Sprintf(format, args...))
54 | }
55 |
56 | func (t *ginkgoTestingTProxy) Failed() bool {
57 | return false
58 | }
59 |
60 | func (t *ginkgoTestingTProxy) Parallel() {
61 | }
62 |
63 | func (t *ginkgoTestingTProxy) Skip(args ...interface{}) {
64 | fmt.Println(args...)
65 | }
66 |
67 | func (t *ginkgoTestingTProxy) Skipf(format string, args ...interface{}) {
68 | t.Skip(fmt.Sprintf(format, args...))
69 | }
70 |
71 | func (t *ginkgoTestingTProxy) SkipNow() {
72 | }
73 |
74 | func (t *ginkgoTestingTProxy) Skipped() bool {
75 | return false
76 | }
77 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/writer/fake_writer.go:
--------------------------------------------------------------------------------
1 | package writer
2 |
3 | type FakeGinkgoWriter struct {
4 | EventStream []string
5 | }
6 |
7 | func NewFake() *FakeGinkgoWriter {
8 | return &FakeGinkgoWriter{
9 | EventStream: []string{},
10 | }
11 | }
12 |
13 | func (writer *FakeGinkgoWriter) AddEvent(event string) {
14 | writer.EventStream = append(writer.EventStream, event)
15 | }
16 |
17 | func (writer *FakeGinkgoWriter) Truncate() {
18 | writer.EventStream = append(writer.EventStream, "TRUNCATE")
19 | }
20 |
21 | func (writer *FakeGinkgoWriter) DumpOut() {
22 | writer.EventStream = append(writer.EventStream, "DUMP")
23 | }
24 |
25 | func (writer *FakeGinkgoWriter) DumpOutWithHeader(header string) {
26 | writer.EventStream = append(writer.EventStream, "DUMP_WITH_HEADER: "+header)
27 | }
28 |
29 | func (writer *FakeGinkgoWriter) Bytes() []byte {
30 | writer.EventStream = append(writer.EventStream, "BYTES")
31 | return nil
32 | }
33 |
34 | func (writer *FakeGinkgoWriter) Write(data []byte) (n int, err error) {
35 | return 0, nil
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/internal/writer/writer.go:
--------------------------------------------------------------------------------
1 | package writer
2 |
3 | import (
4 | "bytes"
5 | "io"
6 | "sync"
7 | )
8 |
9 | type WriterInterface interface {
10 | io.Writer
11 |
12 | Truncate()
13 | DumpOut()
14 | DumpOutWithHeader(header string)
15 | Bytes() []byte
16 | }
17 |
18 | type Writer struct {
19 | buffer *bytes.Buffer
20 | outWriter io.Writer
21 | lock *sync.Mutex
22 | stream bool
23 | }
24 |
25 | func New(outWriter io.Writer) *Writer {
26 | return &Writer{
27 | buffer: &bytes.Buffer{},
28 | lock: &sync.Mutex{},
29 | outWriter: outWriter,
30 | stream: true,
31 | }
32 | }
33 |
34 | func (w *Writer) SetStream(stream bool) {
35 | w.lock.Lock()
36 | defer w.lock.Unlock()
37 | w.stream = stream
38 | }
39 |
40 | func (w *Writer) Write(b []byte) (n int, err error) {
41 | w.lock.Lock()
42 | defer w.lock.Unlock()
43 |
44 | n, err = w.buffer.Write(b)
45 | if w.stream {
46 | return w.outWriter.Write(b)
47 | }
48 | return n, err
49 | }
50 |
51 | func (w *Writer) Truncate() {
52 | w.lock.Lock()
53 | defer w.lock.Unlock()
54 | w.buffer.Reset()
55 | }
56 |
57 | func (w *Writer) DumpOut() {
58 | w.lock.Lock()
59 | defer w.lock.Unlock()
60 | if !w.stream {
61 | w.buffer.WriteTo(w.outWriter)
62 | }
63 | }
64 |
65 | func (w *Writer) Bytes() []byte {
66 | w.lock.Lock()
67 | defer w.lock.Unlock()
68 | b := w.buffer.Bytes()
69 | copied := make([]byte, len(b))
70 | copy(copied, b)
71 | return copied
72 | }
73 |
74 | func (w *Writer) DumpOutWithHeader(header string) {
75 | w.lock.Lock()
76 | defer w.lock.Unlock()
77 | if !w.stream && w.buffer.Len() > 0 {
78 | w.outWriter.Write([]byte(header))
79 | w.buffer.WriteTo(w.outWriter)
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/fake_reporter.go:
--------------------------------------------------------------------------------
1 | package reporters
2 |
3 | import (
4 | "github.com/onsi/ginkgo/config"
5 | "github.com/onsi/ginkgo/types"
6 | )
7 |
8 | //FakeReporter is useful for testing purposes
9 | type FakeReporter struct {
10 | Config config.GinkgoConfigType
11 |
12 | BeginSummary *types.SuiteSummary
13 | BeforeSuiteSummary *types.SetupSummary
14 | SpecWillRunSummaries []*types.SpecSummary
15 | SpecSummaries []*types.SpecSummary
16 | AfterSuiteSummary *types.SetupSummary
17 | EndSummary *types.SuiteSummary
18 |
19 | SpecWillRunStub func(specSummary *types.SpecSummary)
20 | SpecDidCompleteStub func(specSummary *types.SpecSummary)
21 | }
22 |
23 | func NewFakeReporter() *FakeReporter {
24 | return &FakeReporter{
25 | SpecWillRunSummaries: make([]*types.SpecSummary, 0),
26 | SpecSummaries: make([]*types.SpecSummary, 0),
27 | }
28 | }
29 |
30 | func (fakeR *FakeReporter) SpecSuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary) {
31 | fakeR.Config = config
32 | fakeR.BeginSummary = summary
33 | }
34 |
35 | func (fakeR *FakeReporter) BeforeSuiteDidRun(setupSummary *types.SetupSummary) {
36 | fakeR.BeforeSuiteSummary = setupSummary
37 | }
38 |
39 | func (fakeR *FakeReporter) SpecWillRun(specSummary *types.SpecSummary) {
40 | if fakeR.SpecWillRunStub != nil {
41 | fakeR.SpecWillRunStub(specSummary)
42 | }
43 | fakeR.SpecWillRunSummaries = append(fakeR.SpecWillRunSummaries, specSummary)
44 | }
45 |
46 | func (fakeR *FakeReporter) SpecDidComplete(specSummary *types.SpecSummary) {
47 | if fakeR.SpecDidCompleteStub != nil {
48 | fakeR.SpecDidCompleteStub(specSummary)
49 | }
50 | fakeR.SpecSummaries = append(fakeR.SpecSummaries, specSummary)
51 | }
52 |
53 | func (fakeR *FakeReporter) AfterSuiteDidRun(setupSummary *types.SetupSummary) {
54 | fakeR.AfterSuiteSummary = setupSummary
55 | }
56 |
57 | func (fakeR *FakeReporter) SpecSuiteDidEnd(summary *types.SuiteSummary) {
58 | fakeR.EndSummary = summary
59 | }
60 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/reporter.go:
--------------------------------------------------------------------------------
1 | package reporters
2 |
3 | import (
4 | "github.com/onsi/ginkgo/config"
5 | "github.com/onsi/ginkgo/types"
6 | )
7 |
8 | type Reporter interface {
9 | SpecSuiteWillBegin(config config.GinkgoConfigType, summary *types.SuiteSummary)
10 | BeforeSuiteDidRun(setupSummary *types.SetupSummary)
11 | SpecWillRun(specSummary *types.SpecSummary)
12 | SpecDidComplete(specSummary *types.SpecSummary)
13 | AfterSuiteDidRun(setupSummary *types.SetupSummary)
14 | SpecSuiteDidEnd(summary *types.SuiteSummary)
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/console_logging.go:
--------------------------------------------------------------------------------
1 | package stenographer
2 |
3 | import (
4 | "fmt"
5 | "strings"
6 | )
7 |
8 | func (s *consoleStenographer) colorize(colorCode string, format string, args ...interface{}) string {
9 | var out string
10 |
11 | if len(args) > 0 {
12 | out = fmt.Sprintf(format, args...)
13 | } else {
14 | out = format
15 | }
16 |
17 | if s.color {
18 | return fmt.Sprintf("%s%s%s", colorCode, out, defaultStyle)
19 | } else {
20 | return out
21 | }
22 | }
23 |
24 | func (s *consoleStenographer) printBanner(text string, bannerCharacter string) {
25 | fmt.Fprintln(s.w, text)
26 | fmt.Fprintln(s.w, strings.Repeat(bannerCharacter, len(text)))
27 | }
28 |
29 | func (s *consoleStenographer) printNewLine() {
30 | fmt.Fprintln(s.w, "")
31 | }
32 |
33 | func (s *consoleStenographer) printDelimiter() {
34 | fmt.Fprintln(s.w, s.colorize(grayColor, "%s", strings.Repeat("-", 30)))
35 | }
36 |
37 | func (s *consoleStenographer) print(indentation int, format string, args ...interface{}) {
38 | fmt.Fprint(s.w, s.indent(indentation, format, args...))
39 | }
40 |
41 | func (s *consoleStenographer) println(indentation int, format string, args ...interface{}) {
42 | fmt.Fprintln(s.w, s.indent(indentation, format, args...))
43 | }
44 |
45 | func (s *consoleStenographer) indent(indentation int, format string, args ...interface{}) string {
46 | var text string
47 |
48 | if len(args) > 0 {
49 | text = fmt.Sprintf(format, args...)
50 | } else {
51 | text = format
52 | }
53 |
54 | stringArray := strings.Split(text, "\n")
55 | padding := ""
56 | if indentation >= 0 {
57 | padding = strings.Repeat(" ", indentation)
58 | }
59 | for i, s := range stringArray {
60 | stringArray[i] = fmt.Sprintf("%s%s", padding, s)
61 | }
62 |
63 | return strings.Join(stringArray, "\n")
64 | }
65 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2016 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/onsi/ginkgo/reporters/stenographer/support/go-colorable/README.md:
--------------------------------------------------------------------------------
1 | # go-colorable
2 |
3 | Colorable writer for windows.
4 |
5 | For example, most of logger packages doesn't show colors on windows. (I know we can do it with ansicon. But I don't want.)
6 | This package is possible to handle escape sequence for ansi color on windows.
7 |
8 | ## Too Bad!
9 |
10 | 
11 |
12 |
13 | ## So Good!
14 |
15 | 
16 |
17 | ## Usage
18 |
19 | ```go
20 | logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true})
21 | logrus.SetOutput(colorable.NewColorableStdout())
22 |
23 | logrus.Info("succeeded")
24 | logrus.Warn("not correct")
25 | logrus.Error("something error")
26 | logrus.Fatal("panic")
27 | ```
28 |
29 | You can compile above code on non-windows OSs.
30 |
31 | ## Installation
32 |
33 | ```
34 | $ go get github.com/mattn/go-colorable
35 | ```
36 |
37 | # License
38 |
39 | MIT
40 |
41 | # Author
42 |
43 | Yasuhiro Matsumoto (a.k.a mattn)
44 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable/colorable_others.go:
--------------------------------------------------------------------------------
1 | // +build !windows
2 |
3 | package colorable
4 |
5 | import (
6 | "io"
7 | "os"
8 | )
9 |
10 | func NewColorable(file *os.File) io.Writer {
11 | if file == nil {
12 | panic("nil passed instead of *os.File to NewColorable()")
13 | }
14 |
15 | return file
16 | }
17 |
18 | func NewColorableStdout() io.Writer {
19 | return os.Stdout
20 | }
21 |
22 | func NewColorableStderr() io.Writer {
23 | return os.Stderr
24 | }
25 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-colorable/noncolorable.go:
--------------------------------------------------------------------------------
1 | package colorable
2 |
3 | import (
4 | "bytes"
5 | "fmt"
6 | "io"
7 | )
8 |
9 | type NonColorable struct {
10 | out io.Writer
11 | lastbuf bytes.Buffer
12 | }
13 |
14 | func NewNonColorable(w io.Writer) io.Writer {
15 | return &NonColorable{out: w}
16 | }
17 |
18 | func (w *NonColorable) Write(data []byte) (n int, err error) {
19 | er := bytes.NewBuffer(data)
20 | loop:
21 | for {
22 | c1, _, err := er.ReadRune()
23 | if err != nil {
24 | break loop
25 | }
26 | if c1 != 0x1b {
27 | fmt.Fprint(w.out, string(c1))
28 | continue
29 | }
30 | c2, _, err := er.ReadRune()
31 | if err != nil {
32 | w.lastbuf.WriteRune(c1)
33 | break loop
34 | }
35 | if c2 != 0x5b {
36 | w.lastbuf.WriteRune(c1)
37 | w.lastbuf.WriteRune(c2)
38 | continue
39 | }
40 |
41 | var buf bytes.Buffer
42 | for {
43 | c, _, err := er.ReadRune()
44 | if err != nil {
45 | w.lastbuf.WriteRune(c1)
46 | w.lastbuf.WriteRune(c2)
47 | w.lastbuf.Write(buf.Bytes())
48 | break loop
49 | }
50 | if ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || c == '@' {
51 | break
52 | }
53 | buf.Write([]byte(string(c)))
54 | }
55 | }
56 | return len(data) - w.lastbuf.Len(), nil
57 | }
58 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) Yasuhiro MATSUMOTO
2 |
3 | MIT License (Expat)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
10 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/README.md:
--------------------------------------------------------------------------------
1 | # go-isatty
2 |
3 | isatty for golang
4 |
5 | ## Usage
6 |
7 | ```go
8 | package main
9 |
10 | import (
11 | "fmt"
12 | "github.com/mattn/go-isatty"
13 | "os"
14 | )
15 |
16 | func main() {
17 | if isatty.IsTerminal(os.Stdout.Fd()) {
18 | fmt.Println("Is Terminal")
19 | } else {
20 | fmt.Println("Is Not Terminal")
21 | }
22 | }
23 | ```
24 |
25 | ## Installation
26 |
27 | ```
28 | $ go get github.com/mattn/go-isatty
29 | ```
30 |
31 | # License
32 |
33 | MIT
34 |
35 | # Author
36 |
37 | Yasuhiro Matsumoto (a.k.a mattn)
38 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/doc.go:
--------------------------------------------------------------------------------
1 | // Package isatty implements interface to isatty
2 | package isatty
3 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_appengine.go:
--------------------------------------------------------------------------------
1 | // +build appengine
2 |
3 | package isatty
4 |
5 | // IsTerminal returns true if the file descriptor is terminal which
6 | // is always false on on appengine classic which is a sandboxed PaaS.
7 | func IsTerminal(fd uintptr) bool {
8 | return false
9 | }
10 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_bsd.go:
--------------------------------------------------------------------------------
1 | // +build darwin freebsd openbsd netbsd
2 | // +build !appengine
3 |
4 | package isatty
5 |
6 | import (
7 | "syscall"
8 | "unsafe"
9 | )
10 |
11 | const ioctlReadTermios = syscall.TIOCGETA
12 |
13 | // IsTerminal return true if the file descriptor is terminal.
14 | func IsTerminal(fd uintptr) bool {
15 | var termios syscall.Termios
16 | _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0)
17 | return err == 0
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_linux.go:
--------------------------------------------------------------------------------
1 | // +build linux
2 | // +build !appengine
3 |
4 | package isatty
5 |
6 | import (
7 | "syscall"
8 | "unsafe"
9 | )
10 |
11 | const ioctlReadTermios = syscall.TCGETS
12 |
13 | // IsTerminal return true if the file descriptor is terminal.
14 | func IsTerminal(fd uintptr) bool {
15 | var termios syscall.Termios
16 | _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fd, ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0)
17 | return err == 0
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_solaris.go:
--------------------------------------------------------------------------------
1 | // +build solaris
2 | // +build !appengine
3 |
4 | package isatty
5 |
6 | import (
7 | "golang.org/x/sys/unix"
8 | )
9 |
10 | // IsTerminal returns true if the given file descriptor is a terminal.
11 | // see: http://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libbc/libc/gen/common/isatty.c
12 | func IsTerminal(fd uintptr) bool {
13 | var termio unix.Termio
14 | err := unix.IoctlSetTermio(int(fd), unix.TCGETA, &termio)
15 | return err == nil
16 | }
17 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/reporters/stenographer/support/go-isatty/isatty_windows.go:
--------------------------------------------------------------------------------
1 | // +build windows
2 | // +build !appengine
3 |
4 | package isatty
5 |
6 | import (
7 | "syscall"
8 | "unsafe"
9 | )
10 |
11 | var kernel32 = syscall.NewLazyDLL("kernel32.dll")
12 | var procGetConsoleMode = kernel32.NewProc("GetConsoleMode")
13 |
14 | // IsTerminal return true if the file descriptor is terminal.
15 | func IsTerminal(fd uintptr) bool {
16 | var st uint32
17 | r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fd, uintptr(unsafe.Pointer(&st)), 0)
18 | return r != 0 && e == 0
19 | }
20 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/types/code_location.go:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import (
4 | "fmt"
5 | )
6 |
7 | type CodeLocation struct {
8 | FileName string
9 | LineNumber int
10 | FullStackTrace string
11 | }
12 |
13 | func (codeLocation CodeLocation) String() string {
14 | return fmt.Sprintf("%s:%d", codeLocation.FileName, codeLocation.LineNumber)
15 | }
16 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/ginkgo/types/synchronization.go:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | import (
4 | "encoding/json"
5 | )
6 |
7 | type RemoteBeforeSuiteState int
8 |
9 | const (
10 | RemoteBeforeSuiteStateInvalid RemoteBeforeSuiteState = iota
11 |
12 | RemoteBeforeSuiteStatePending
13 | RemoteBeforeSuiteStatePassed
14 | RemoteBeforeSuiteStateFailed
15 | RemoteBeforeSuiteStateDisappeared
16 | )
17 |
18 | type RemoteBeforeSuiteData struct {
19 | Data []byte
20 | State RemoteBeforeSuiteState
21 | }
22 |
23 | func (r RemoteBeforeSuiteData) ToJSON() []byte {
24 | data, _ := json.Marshal(r)
25 | return data
26 | }
27 |
28 | type RemoteAfterSuiteData struct {
29 | CanRun bool
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.test
3 | .
4 | .idea
5 | gomega.iml
6 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 | go:
3 | - 1.6.x
4 | - 1.7.x
5 | - 1.8.x
6 | - 1.9.x
7 | - 1.10.x
8 |
9 | install:
10 | - go get -v ./...
11 | - go get github.com/onsi/ginkgo
12 | - go install github.com/onsi/ginkgo/ginkgo
13 |
14 | script: $HOME/gopath/bin/ginkgo -p -r --randomizeAllSpecs --failOnPending --randomizeSuites --race && go vet
15 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing to Gomega
2 |
3 | Your contributions to Gomega are essential for its long-term maintenance and improvement. To make a contribution:
4 |
5 | - Please **open an issue first** - describe what problem you are trying to solve and give the community a forum for input and feedback ahead of investing time in writing code!
6 | - Ensure adequate test coverage:
7 | - Make sure to add appropriate unit tests
8 | - Please run all tests locally (`ginkgo -r -p`) and make sure they go green before submitting the PR
9 | - Please run following linter locally `go vet ./...` and make sure output does not contain any warnings
10 | - Update the documentation. In addition to standard `godoc` comments Gomega has extensive documentation on the `gh-pages` branch. If relevant, please submit a docs PR to that branch alongside your code PR.
11 |
12 | If you're a committer, check out RELEASING.md to learn how to cut a release.
13 |
14 | Thanks for supporting Gomega!
15 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013-2014 Onsi Fakhouri
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining
4 | a copy of this software and associated documentation files (the
5 | "Software"), to deal in the Software without restriction, including
6 | without limitation the rights to use, copy, modify, merge, publish,
7 | distribute, sublicense, and/or sell copies of the Software, and to
8 | permit persons to whom the Software is furnished to do so, subject to
9 | the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be
12 | included in all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | [](https://travis-ci.org/onsi/gomega)
4 |
5 | Jump straight to the [docs](http://onsi.github.io/gomega/) to learn about Gomega, including a list of [all available matchers](http://onsi.github.io/gomega/#provided-matchers).
6 |
7 | If you have a question, comment, bug report, feature request, etc. please open a GitHub issue.
8 |
9 | ## [Ginkgo](http://github.com/onsi/ginkgo): a BDD Testing Framework for Golang
10 |
11 | Learn more about Ginkgo [here](http://onsi.github.io/ginkgo/)
12 |
13 | ## Community Matchers
14 |
15 | A collection of community matchers is available on the [wiki](https://github.com/onsi/gomega/wiki).
16 |
17 | ## License
18 |
19 | Gomega is MIT-Licensed
20 |
21 | The `ConsistOf` matcher uses [goraph](https://github.com/amitkgupta/goraph) which is embedded in the source to simplify distribution. goraph has an MIT license.
22 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/RELEASING.md:
--------------------------------------------------------------------------------
1 | A Gomega release is a tagged sha and a GitHub release. To cut a release:
2 |
3 | 1. Ensure CHANGELOG.md is up to date.
4 | - Use `git log --pretty=format:'- %s [%h]' HEAD...vX.X.X` to list all the commits since the last release
5 | - Categorize the changes into
6 | - Breaking Changes (requires a major version)
7 | - New Features (minor version)
8 | - Fixes (fix version)
9 | - Maintenance (which in general should not be mentioned in `CHANGELOG.md` as they have no user impact)
10 | 2. Update GOMEGA_VERSION in `gomega_dsl.go`
11 | 3. Push a commit with the version number as the commit message (e.g. `v1.3.0`)
12 | 4. Create a new [GitHub release](https://help.github.com/articles/creating-releases/) with the version number as the tag (e.g. `v1.3.0`). List the key changes in the release notes.
13 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/internal/oraclematcher/oracle_matcher.go:
--------------------------------------------------------------------------------
1 | package oraclematcher
2 |
3 | import "github.com/onsi/gomega/types"
4 |
5 | /*
6 | GomegaMatchers that also match the OracleMatcher interface can convey information about
7 | whether or not their result will change upon future attempts.
8 |
9 | This allows `Eventually` and `Consistently` to short circuit if success becomes impossible.
10 |
11 | For example, a process' exit code can never change. So, gexec's Exit matcher returns `true`
12 | for `MatchMayChangeInTheFuture` until the process exits, at which point it returns `false` forevermore.
13 | */
14 | type OracleMatcher interface {
15 | MatchMayChangeInTheFuture(actual interface{}) bool
16 | }
17 |
18 | func MatchMayChangeInTheFuture(matcher types.GomegaMatcher, value interface{}) bool {
19 | oracleMatcher, ok := matcher.(OracleMatcher)
20 | if !ok {
21 | return true
22 | }
23 |
24 | return oracleMatcher.MatchMayChangeInTheFuture(value)
25 | }
26 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/internal/testingtsupport/testing_t_support.go:
--------------------------------------------------------------------------------
1 | package testingtsupport
2 |
3 | import (
4 | "regexp"
5 | "runtime/debug"
6 | "strings"
7 |
8 | "github.com/onsi/gomega/types"
9 | )
10 |
11 | type gomegaTestingT interface {
12 | Fatalf(format string, args ...interface{})
13 | }
14 |
15 | func BuildTestingTGomegaFailHandler(t gomegaTestingT) types.GomegaFailHandler {
16 | return func(message string, callerSkip ...int) {
17 | skip := 1
18 | if len(callerSkip) > 0 {
19 | skip = callerSkip[0]
20 | }
21 | stackTrace := pruneStack(string(debug.Stack()), skip)
22 | t.Fatalf("\n%s\n%s", stackTrace, message)
23 | }
24 | }
25 |
26 | func pruneStack(fullStackTrace string, skip int) string {
27 | stack := strings.Split(fullStackTrace, "\n")
28 | if len(stack) > 2*(skip+1) {
29 | stack = stack[2*(skip+1):]
30 | }
31 | prunedStack := []string{}
32 | re := regexp.MustCompile(`\/ginkgo\/|\/pkg\/testing\/|\/pkg\/runtime\/`)
33 | for i := 0; i < len(stack)/2; i++ {
34 | if !re.Match([]byte(stack[i*2])) {
35 | prunedStack = append(prunedStack, stack[i*2])
36 | prunedStack = append(prunedStack, stack[i*2+1])
37 | }
38 | }
39 | return strings.Join(prunedStack, "\n")
40 | }
41 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/assignable_to_type_of_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type AssignableToTypeOfMatcher struct {
11 | Expected interface{}
12 | }
13 |
14 | func (matcher *AssignableToTypeOfMatcher) Match(actual interface{}) (success bool, err error) {
15 | if actual == nil && matcher.Expected == nil {
16 | return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.")
17 | } else if matcher.Expected == nil {
18 | return false, fmt.Errorf("Refusing to compare type to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.")
19 | } else if actual == nil {
20 | return false, nil
21 | }
22 |
23 | actualType := reflect.TypeOf(actual)
24 | expectedType := reflect.TypeOf(matcher.Expected)
25 |
26 | return actualType.AssignableTo(expectedType), nil
27 | }
28 |
29 | func (matcher *AssignableToTypeOfMatcher) FailureMessage(actual interface{}) string {
30 | return format.Message(actual, fmt.Sprintf("to be assignable to the type: %T", matcher.Expected))
31 | }
32 |
33 | func (matcher *AssignableToTypeOfMatcher) NegatedFailureMessage(actual interface{}) string {
34 | return format.Message(actual, fmt.Sprintf("not to be assignable to the type: %T", matcher.Expected))
35 | }
36 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/attributes_slice.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "encoding/xml"
5 | "strings"
6 | )
7 |
8 | type attributesSlice []xml.Attr
9 |
10 | func (attrs attributesSlice) Len() int { return len(attrs) }
11 | func (attrs attributesSlice) Less(i, j int) bool {
12 | return strings.Compare(attrs[i].Name.Local, attrs[j].Name.Local) == -1
13 | }
14 | func (attrs attributesSlice) Swap(i, j int) { attrs[i], attrs[j] = attrs[j], attrs[i] }
15 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_a_directory.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "os"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type notADirectoryError struct {
11 | os.FileInfo
12 | }
13 |
14 | func (t notADirectoryError) Error() string {
15 | fileInfo := os.FileInfo(t)
16 | switch {
17 | case fileInfo.Mode().IsRegular():
18 | return "file is a regular file"
19 | default:
20 | return fmt.Sprintf("file mode is: %s", fileInfo.Mode().String())
21 | }
22 | }
23 |
24 | type BeADirectoryMatcher struct {
25 | expected interface{}
26 | err error
27 | }
28 |
29 | func (matcher *BeADirectoryMatcher) Match(actual interface{}) (success bool, err error) {
30 | actualFilename, ok := actual.(string)
31 | if !ok {
32 | return false, fmt.Errorf("BeADirectoryMatcher matcher expects a file path")
33 | }
34 |
35 | fileInfo, err := os.Stat(actualFilename)
36 | if err != nil {
37 | matcher.err = err
38 | return false, nil
39 | }
40 |
41 | if !fileInfo.Mode().IsDir() {
42 | matcher.err = notADirectoryError{fileInfo}
43 | return false, nil
44 | }
45 | return true, nil
46 | }
47 |
48 | func (matcher *BeADirectoryMatcher) FailureMessage(actual interface{}) (message string) {
49 | return format.Message(actual, fmt.Sprintf("to be a directory: %s", matcher.err))
50 | }
51 |
52 | func (matcher *BeADirectoryMatcher) NegatedFailureMessage(actual interface{}) (message string) {
53 | return format.Message(actual, fmt.Sprintf("not be a directory"))
54 | }
55 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_a_regular_file.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "os"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type notARegularFileError struct {
11 | os.FileInfo
12 | }
13 |
14 | func (t notARegularFileError) Error() string {
15 | fileInfo := os.FileInfo(t)
16 | switch {
17 | case fileInfo.IsDir():
18 | return "file is a directory"
19 | default:
20 | return fmt.Sprintf("file mode is: %s", fileInfo.Mode().String())
21 | }
22 | }
23 |
24 | type BeARegularFileMatcher struct {
25 | expected interface{}
26 | err error
27 | }
28 |
29 | func (matcher *BeARegularFileMatcher) Match(actual interface{}) (success bool, err error) {
30 | actualFilename, ok := actual.(string)
31 | if !ok {
32 | return false, fmt.Errorf("BeARegularFileMatcher matcher expects a file path")
33 | }
34 |
35 | fileInfo, err := os.Stat(actualFilename)
36 | if err != nil {
37 | matcher.err = err
38 | return false, nil
39 | }
40 |
41 | if !fileInfo.Mode().IsRegular() {
42 | matcher.err = notARegularFileError{fileInfo}
43 | return false, nil
44 | }
45 | return true, nil
46 | }
47 |
48 | func (matcher *BeARegularFileMatcher) FailureMessage(actual interface{}) (message string) {
49 | return format.Message(actual, fmt.Sprintf("to be a regular file: %s", matcher.err))
50 | }
51 |
52 | func (matcher *BeARegularFileMatcher) NegatedFailureMessage(actual interface{}) (message string) {
53 | return format.Message(actual, fmt.Sprintf("not be a regular file"))
54 | }
55 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_an_existing_file.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "os"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type BeAnExistingFileMatcher struct {
11 | expected interface{}
12 | }
13 |
14 | func (matcher *BeAnExistingFileMatcher) Match(actual interface{}) (success bool, err error) {
15 | actualFilename, ok := actual.(string)
16 | if !ok {
17 | return false, fmt.Errorf("BeAnExistingFileMatcher matcher expects a file path")
18 | }
19 |
20 | if _, err = os.Stat(actualFilename); err != nil {
21 | switch {
22 | case os.IsNotExist(err):
23 | return false, nil
24 | default:
25 | return false, err
26 | }
27 | }
28 |
29 | return true, nil
30 | }
31 |
32 | func (matcher *BeAnExistingFileMatcher) FailureMessage(actual interface{}) (message string) {
33 | return format.Message(actual, fmt.Sprintf("to exist"))
34 | }
35 |
36 | func (matcher *BeAnExistingFileMatcher) NegatedFailureMessage(actual interface{}) (message string) {
37 | return format.Message(actual, fmt.Sprintf("not to exist"))
38 | }
39 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_closed_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type BeClosedMatcher struct {
11 | }
12 |
13 | func (matcher *BeClosedMatcher) Match(actual interface{}) (success bool, err error) {
14 | if !isChan(actual) {
15 | return false, fmt.Errorf("BeClosed matcher expects a channel. Got:\n%s", format.Object(actual, 1))
16 | }
17 |
18 | channelType := reflect.TypeOf(actual)
19 | channelValue := reflect.ValueOf(actual)
20 |
21 | if channelType.ChanDir() == reflect.SendDir {
22 | return false, fmt.Errorf("BeClosed matcher cannot determine if a send-only channel is closed or open. Got:\n%s", format.Object(actual, 1))
23 | }
24 |
25 | winnerIndex, _, open := reflect.Select([]reflect.SelectCase{
26 | reflect.SelectCase{Dir: reflect.SelectRecv, Chan: channelValue},
27 | reflect.SelectCase{Dir: reflect.SelectDefault},
28 | })
29 |
30 | var closed bool
31 | if winnerIndex == 0 {
32 | closed = !open
33 | } else if winnerIndex == 1 {
34 | closed = false
35 | }
36 |
37 | return closed, nil
38 | }
39 |
40 | func (matcher *BeClosedMatcher) FailureMessage(actual interface{}) (message string) {
41 | return format.Message(actual, "to be closed")
42 | }
43 |
44 | func (matcher *BeClosedMatcher) NegatedFailureMessage(actual interface{}) (message string) {
45 | return format.Message(actual, "to be open")
46 | }
47 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_empty_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type BeEmptyMatcher struct {
10 | }
11 |
12 | func (matcher *BeEmptyMatcher) Match(actual interface{}) (success bool, err error) {
13 | length, ok := lengthOf(actual)
14 | if !ok {
15 | return false, fmt.Errorf("BeEmpty matcher expects a string/array/map/channel/slice. Got:\n%s", format.Object(actual, 1))
16 | }
17 |
18 | return length == 0, nil
19 | }
20 |
21 | func (matcher *BeEmptyMatcher) FailureMessage(actual interface{}) (message string) {
22 | return format.Message(actual, "to be empty")
23 | }
24 |
25 | func (matcher *BeEmptyMatcher) NegatedFailureMessage(actual interface{}) (message string) {
26 | return format.Message(actual, "not to be empty")
27 | }
28 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_equivalent_to_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type BeEquivalentToMatcher struct {
11 | Expected interface{}
12 | }
13 |
14 | func (matcher *BeEquivalentToMatcher) Match(actual interface{}) (success bool, err error) {
15 | if actual == nil && matcher.Expected == nil {
16 | return false, fmt.Errorf("Both actual and expected must not be nil.")
17 | }
18 |
19 | convertedActual := actual
20 |
21 | if actual != nil && matcher.Expected != nil && reflect.TypeOf(actual).ConvertibleTo(reflect.TypeOf(matcher.Expected)) {
22 | convertedActual = reflect.ValueOf(actual).Convert(reflect.TypeOf(matcher.Expected)).Interface()
23 | }
24 |
25 | return reflect.DeepEqual(convertedActual, matcher.Expected), nil
26 | }
27 |
28 | func (matcher *BeEquivalentToMatcher) FailureMessage(actual interface{}) (message string) {
29 | return format.Message(actual, "to be equivalent to", matcher.Expected)
30 | }
31 |
32 | func (matcher *BeEquivalentToMatcher) NegatedFailureMessage(actual interface{}) (message string) {
33 | return format.Message(actual, "not to be equivalent to", matcher.Expected)
34 | }
35 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_false_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type BeFalseMatcher struct {
10 | }
11 |
12 | func (matcher *BeFalseMatcher) Match(actual interface{}) (success bool, err error) {
13 | if !isBool(actual) {
14 | return false, fmt.Errorf("Expected a boolean. Got:\n%s", format.Object(actual, 1))
15 | }
16 |
17 | return actual == false, nil
18 | }
19 |
20 | func (matcher *BeFalseMatcher) FailureMessage(actual interface{}) (message string) {
21 | return format.Message(actual, "to be false")
22 | }
23 |
24 | func (matcher *BeFalseMatcher) NegatedFailureMessage(actual interface{}) (message string) {
25 | return format.Message(actual, "not to be false")
26 | }
27 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_identical_to.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "runtime"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type BeIdenticalToMatcher struct {
11 | Expected interface{}
12 | }
13 |
14 | func (matcher *BeIdenticalToMatcher) Match(actual interface{}) (success bool, matchErr error) {
15 | if actual == nil && matcher.Expected == nil {
16 | return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.")
17 | }
18 |
19 | defer func() {
20 | if r := recover(); r != nil {
21 | if _, ok := r.(runtime.Error); ok {
22 | success = false
23 | matchErr = nil
24 | }
25 | }
26 | }()
27 |
28 | return actual == matcher.Expected, nil
29 | }
30 |
31 | func (matcher *BeIdenticalToMatcher) FailureMessage(actual interface{}) string {
32 | return format.Message(actual, "to be identical to", matcher.Expected)
33 | }
34 |
35 | func (matcher *BeIdenticalToMatcher) NegatedFailureMessage(actual interface{}) string {
36 | return format.Message(actual, "not to be identical to", matcher.Expected)
37 | }
38 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_nil_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import "github.com/onsi/gomega/format"
4 |
5 | type BeNilMatcher struct {
6 | }
7 |
8 | func (matcher *BeNilMatcher) Match(actual interface{}) (success bool, err error) {
9 | return isNil(actual), nil
10 | }
11 |
12 | func (matcher *BeNilMatcher) FailureMessage(actual interface{}) (message string) {
13 | return format.Message(actual, "to be nil")
14 | }
15 |
16 | func (matcher *BeNilMatcher) NegatedFailureMessage(actual interface{}) (message string) {
17 | return format.Message(actual, "not to be nil")
18 | }
19 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_temporally_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "time"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type BeTemporallyMatcher struct {
11 | Comparator string
12 | CompareTo time.Time
13 | Threshold []time.Duration
14 | }
15 |
16 | func (matcher *BeTemporallyMatcher) FailureMessage(actual interface{}) (message string) {
17 | return format.Message(actual, fmt.Sprintf("to be %s", matcher.Comparator), matcher.CompareTo)
18 | }
19 |
20 | func (matcher *BeTemporallyMatcher) NegatedFailureMessage(actual interface{}) (message string) {
21 | return format.Message(actual, fmt.Sprintf("not to be %s", matcher.Comparator), matcher.CompareTo)
22 | }
23 |
24 | func (matcher *BeTemporallyMatcher) Match(actual interface{}) (bool, error) {
25 | // predicate to test for time.Time type
26 | isTime := func(t interface{}) bool {
27 | _, ok := t.(time.Time)
28 | return ok
29 | }
30 |
31 | if !isTime(actual) {
32 | return false, fmt.Errorf("Expected a time.Time. Got:\n%s", format.Object(actual, 1))
33 | }
34 |
35 | switch matcher.Comparator {
36 | case "==", "~", ">", ">=", "<", "<=":
37 | default:
38 | return false, fmt.Errorf("Unknown comparator: %s", matcher.Comparator)
39 | }
40 |
41 | var threshold = time.Millisecond
42 | if len(matcher.Threshold) == 1 {
43 | threshold = matcher.Threshold[0]
44 | }
45 |
46 | return matcher.matchTimes(actual.(time.Time), matcher.CompareTo, threshold), nil
47 | }
48 |
49 | func (matcher *BeTemporallyMatcher) matchTimes(actual, compareTo time.Time, threshold time.Duration) (success bool) {
50 | switch matcher.Comparator {
51 | case "==":
52 | return actual.Equal(compareTo)
53 | case "~":
54 | diff := actual.Sub(compareTo)
55 | return -threshold <= diff && diff <= threshold
56 | case ">":
57 | return actual.After(compareTo)
58 | case ">=":
59 | return !actual.Before(compareTo)
60 | case "<":
61 | return actual.Before(compareTo)
62 | case "<=":
63 | return !actual.After(compareTo)
64 | }
65 | return false
66 | }
67 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_true_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type BeTrueMatcher struct {
10 | }
11 |
12 | func (matcher *BeTrueMatcher) Match(actual interface{}) (success bool, err error) {
13 | if !isBool(actual) {
14 | return false, fmt.Errorf("Expected a boolean. Got:\n%s", format.Object(actual, 1))
15 | }
16 |
17 | return actual.(bool), nil
18 | }
19 |
20 | func (matcher *BeTrueMatcher) FailureMessage(actual interface{}) (message string) {
21 | return format.Message(actual, "to be true")
22 | }
23 |
24 | func (matcher *BeTrueMatcher) NegatedFailureMessage(actual interface{}) (message string) {
25 | return format.Message(actual, "not to be true")
26 | }
27 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/be_zero_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "reflect"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type BeZeroMatcher struct {
10 | }
11 |
12 | func (matcher *BeZeroMatcher) Match(actual interface{}) (success bool, err error) {
13 | if actual == nil {
14 | return true, nil
15 | }
16 | zeroValue := reflect.Zero(reflect.TypeOf(actual)).Interface()
17 |
18 | return reflect.DeepEqual(zeroValue, actual), nil
19 |
20 | }
21 |
22 | func (matcher *BeZeroMatcher) FailureMessage(actual interface{}) (message string) {
23 | return format.Message(actual, "to be zero-valued")
24 | }
25 |
26 | func (matcher *BeZeroMatcher) NegatedFailureMessage(actual interface{}) (message string) {
27 | return format.Message(actual, "not to be zero-valued")
28 | }
29 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/contain_element_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type ContainElementMatcher struct {
11 | Element interface{}
12 | }
13 |
14 | func (matcher *ContainElementMatcher) Match(actual interface{}) (success bool, err error) {
15 | if !isArrayOrSlice(actual) && !isMap(actual) {
16 | return false, fmt.Errorf("ContainElement matcher expects an array/slice/map. Got:\n%s", format.Object(actual, 1))
17 | }
18 |
19 | elemMatcher, elementIsMatcher := matcher.Element.(omegaMatcher)
20 | if !elementIsMatcher {
21 | elemMatcher = &EqualMatcher{Expected: matcher.Element}
22 | }
23 |
24 | value := reflect.ValueOf(actual)
25 | var keys []reflect.Value
26 | if isMap(actual) {
27 | keys = value.MapKeys()
28 | }
29 | var lastError error
30 | for i := 0; i < value.Len(); i++ {
31 | var success bool
32 | var err error
33 | if isMap(actual) {
34 | success, err = elemMatcher.Match(value.MapIndex(keys[i]).Interface())
35 | } else {
36 | success, err = elemMatcher.Match(value.Index(i).Interface())
37 | }
38 | if err != nil {
39 | lastError = err
40 | continue
41 | }
42 | if success {
43 | return true, nil
44 | }
45 | }
46 |
47 | return false, lastError
48 | }
49 |
50 | func (matcher *ContainElementMatcher) FailureMessage(actual interface{}) (message string) {
51 | return format.Message(actual, "to contain element matching", matcher.Element)
52 | }
53 |
54 | func (matcher *ContainElementMatcher) NegatedFailureMessage(actual interface{}) (message string) {
55 | return format.Message(actual, "not to contain element matching", matcher.Element)
56 | }
57 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/contain_substring_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "strings"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type ContainSubstringMatcher struct {
11 | Substr string
12 | Args []interface{}
13 | }
14 |
15 | func (matcher *ContainSubstringMatcher) Match(actual interface{}) (success bool, err error) {
16 | actualString, ok := toString(actual)
17 | if !ok {
18 | return false, fmt.Errorf("ContainSubstring matcher requires a string or stringer. Got:\n%s", format.Object(actual, 1))
19 | }
20 |
21 | return strings.Contains(actualString, matcher.stringToMatch()), nil
22 | }
23 |
24 | func (matcher *ContainSubstringMatcher) stringToMatch() string {
25 | stringToMatch := matcher.Substr
26 | if len(matcher.Args) > 0 {
27 | stringToMatch = fmt.Sprintf(matcher.Substr, matcher.Args...)
28 | }
29 | return stringToMatch
30 | }
31 |
32 | func (matcher *ContainSubstringMatcher) FailureMessage(actual interface{}) (message string) {
33 | return format.Message(actual, "to contain substring", matcher.stringToMatch())
34 | }
35 |
36 | func (matcher *ContainSubstringMatcher) NegatedFailureMessage(actual interface{}) (message string) {
37 | return format.Message(actual, "not to contain substring", matcher.stringToMatch())
38 | }
39 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/equal_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "bytes"
5 | "fmt"
6 | "reflect"
7 |
8 | "github.com/onsi/gomega/format"
9 | )
10 |
11 | type EqualMatcher struct {
12 | Expected interface{}
13 | }
14 |
15 | func (matcher *EqualMatcher) Match(actual interface{}) (success bool, err error) {
16 | if actual == nil && matcher.Expected == nil {
17 | return false, fmt.Errorf("Refusing to compare to .\nBe explicit and use BeNil() instead. This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.")
18 | }
19 | // Shortcut for byte slices.
20 | // Comparing long byte slices with reflect.DeepEqual is very slow,
21 | // so use bytes.Equal if actual and expected are both byte slices.
22 | if actualByteSlice, ok := actual.([]byte); ok {
23 | if expectedByteSlice, ok := matcher.Expected.([]byte); ok {
24 | return bytes.Equal(actualByteSlice, expectedByteSlice), nil
25 | }
26 | }
27 | return reflect.DeepEqual(actual, matcher.Expected), nil
28 | }
29 |
30 | func (matcher *EqualMatcher) FailureMessage(actual interface{}) (message string) {
31 | actualString, actualOK := actual.(string)
32 | expectedString, expectedOK := matcher.Expected.(string)
33 | if actualOK && expectedOK {
34 | return format.MessageWithDiff(actualString, "to equal", expectedString)
35 | }
36 |
37 | return format.Message(actual, "to equal", matcher.Expected)
38 | }
39 |
40 | func (matcher *EqualMatcher) NegatedFailureMessage(actual interface{}) (message string) {
41 | return format.Message(actual, "not to equal", matcher.Expected)
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/have_cap_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type HaveCapMatcher struct {
10 | Count int
11 | }
12 |
13 | func (matcher *HaveCapMatcher) Match(actual interface{}) (success bool, err error) {
14 | length, ok := capOf(actual)
15 | if !ok {
16 | return false, fmt.Errorf("HaveCap matcher expects a array/channel/slice. Got:\n%s", format.Object(actual, 1))
17 | }
18 |
19 | return length == matcher.Count, nil
20 | }
21 |
22 | func (matcher *HaveCapMatcher) FailureMessage(actual interface{}) (message string) {
23 | return fmt.Sprintf("Expected\n%s\nto have capacity %d", format.Object(actual, 1), matcher.Count)
24 | }
25 |
26 | func (matcher *HaveCapMatcher) NegatedFailureMessage(actual interface{}) (message string) {
27 | return fmt.Sprintf("Expected\n%s\nnot to have capacity %d", format.Object(actual, 1), matcher.Count)
28 | }
29 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/have_key_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type HaveKeyMatcher struct {
11 | Key interface{}
12 | }
13 |
14 | func (matcher *HaveKeyMatcher) Match(actual interface{}) (success bool, err error) {
15 | if !isMap(actual) {
16 | return false, fmt.Errorf("HaveKey matcher expects a map. Got:%s", format.Object(actual, 1))
17 | }
18 |
19 | keyMatcher, keyIsMatcher := matcher.Key.(omegaMatcher)
20 | if !keyIsMatcher {
21 | keyMatcher = &EqualMatcher{Expected: matcher.Key}
22 | }
23 |
24 | keys := reflect.ValueOf(actual).MapKeys()
25 | for i := 0; i < len(keys); i++ {
26 | success, err := keyMatcher.Match(keys[i].Interface())
27 | if err != nil {
28 | return false, fmt.Errorf("HaveKey's key matcher failed with:\n%s%s", format.Indent, err.Error())
29 | }
30 | if success {
31 | return true, nil
32 | }
33 | }
34 |
35 | return false, nil
36 | }
37 |
38 | func (matcher *HaveKeyMatcher) FailureMessage(actual interface{}) (message string) {
39 | switch matcher.Key.(type) {
40 | case omegaMatcher:
41 | return format.Message(actual, "to have key matching", matcher.Key)
42 | default:
43 | return format.Message(actual, "to have key", matcher.Key)
44 | }
45 | }
46 |
47 | func (matcher *HaveKeyMatcher) NegatedFailureMessage(actual interface{}) (message string) {
48 | switch matcher.Key.(type) {
49 | case omegaMatcher:
50 | return format.Message(actual, "not to have key matching", matcher.Key)
51 | default:
52 | return format.Message(actual, "not to have key", matcher.Key)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/have_len_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type HaveLenMatcher struct {
10 | Count int
11 | }
12 |
13 | func (matcher *HaveLenMatcher) Match(actual interface{}) (success bool, err error) {
14 | length, ok := lengthOf(actual)
15 | if !ok {
16 | return false, fmt.Errorf("HaveLen matcher expects a string/array/map/channel/slice. Got:\n%s", format.Object(actual, 1))
17 | }
18 |
19 | return length == matcher.Count, nil
20 | }
21 |
22 | func (matcher *HaveLenMatcher) FailureMessage(actual interface{}) (message string) {
23 | return fmt.Sprintf("Expected\n%s\nto have length %d", format.Object(actual, 1), matcher.Count)
24 | }
25 |
26 | func (matcher *HaveLenMatcher) NegatedFailureMessage(actual interface{}) (message string) {
27 | return fmt.Sprintf("Expected\n%s\nnot to have length %d", format.Object(actual, 1), matcher.Count)
28 | }
29 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/have_occurred_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type HaveOccurredMatcher struct {
10 | }
11 |
12 | func (matcher *HaveOccurredMatcher) Match(actual interface{}) (success bool, err error) {
13 | // is purely nil?
14 | if actual == nil {
15 | return false, nil
16 | }
17 |
18 | // must be an 'error' type
19 | if !isError(actual) {
20 | return false, fmt.Errorf("Expected an error-type. Got:\n%s", format.Object(actual, 1))
21 | }
22 |
23 | // must be non-nil (or a pointer to a non-nil)
24 | return !isNil(actual), nil
25 | }
26 |
27 | func (matcher *HaveOccurredMatcher) FailureMessage(actual interface{}) (message string) {
28 | return fmt.Sprintf("Expected an error to have occurred. Got:\n%s", format.Object(actual, 1))
29 | }
30 |
31 | func (matcher *HaveOccurredMatcher) NegatedFailureMessage(actual interface{}) (message string) {
32 | return fmt.Sprintf("Expected error:\n%s\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1), "not to have occurred")
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/have_prefix_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type HavePrefixMatcher struct {
10 | Prefix string
11 | Args []interface{}
12 | }
13 |
14 | func (matcher *HavePrefixMatcher) Match(actual interface{}) (success bool, err error) {
15 | actualString, ok := toString(actual)
16 | if !ok {
17 | return false, fmt.Errorf("HavePrefix matcher requires a string or stringer. Got:\n%s", format.Object(actual, 1))
18 | }
19 | prefix := matcher.prefix()
20 | return len(actualString) >= len(prefix) && actualString[0:len(prefix)] == prefix, nil
21 | }
22 |
23 | func (matcher *HavePrefixMatcher) prefix() string {
24 | if len(matcher.Args) > 0 {
25 | return fmt.Sprintf(matcher.Prefix, matcher.Args...)
26 | }
27 | return matcher.Prefix
28 | }
29 |
30 | func (matcher *HavePrefixMatcher) FailureMessage(actual interface{}) (message string) {
31 | return format.Message(actual, "to have prefix", matcher.prefix())
32 | }
33 |
34 | func (matcher *HavePrefixMatcher) NegatedFailureMessage(actual interface{}) (message string) {
35 | return format.Message(actual, "not to have prefix", matcher.prefix())
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/have_suffix_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type HaveSuffixMatcher struct {
10 | Suffix string
11 | Args []interface{}
12 | }
13 |
14 | func (matcher *HaveSuffixMatcher) Match(actual interface{}) (success bool, err error) {
15 | actualString, ok := toString(actual)
16 | if !ok {
17 | return false, fmt.Errorf("HaveSuffix matcher requires a string or stringer. Got:\n%s", format.Object(actual, 1))
18 | }
19 | suffix := matcher.suffix()
20 | return len(actualString) >= len(suffix) && actualString[len(actualString)-len(suffix):] == suffix, nil
21 | }
22 |
23 | func (matcher *HaveSuffixMatcher) suffix() string {
24 | if len(matcher.Args) > 0 {
25 | return fmt.Sprintf(matcher.Suffix, matcher.Args...)
26 | }
27 | return matcher.Suffix
28 | }
29 |
30 | func (matcher *HaveSuffixMatcher) FailureMessage(actual interface{}) (message string) {
31 | return format.Message(actual, "to have suffix", matcher.suffix())
32 | }
33 |
34 | func (matcher *HaveSuffixMatcher) NegatedFailureMessage(actual interface{}) (message string) {
35 | return format.Message(actual, "not to have suffix", matcher.suffix())
36 | }
37 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/match_error_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type MatchErrorMatcher struct {
11 | Expected interface{}
12 | }
13 |
14 | func (matcher *MatchErrorMatcher) Match(actual interface{}) (success bool, err error) {
15 | if isNil(actual) {
16 | return false, fmt.Errorf("Expected an error, got nil")
17 | }
18 |
19 | if !isError(actual) {
20 | return false, fmt.Errorf("Expected an error. Got:\n%s", format.Object(actual, 1))
21 | }
22 |
23 | actualErr := actual.(error)
24 |
25 | if isError(matcher.Expected) {
26 | return reflect.DeepEqual(actualErr, matcher.Expected), nil
27 | }
28 |
29 | if isString(matcher.Expected) {
30 | return actualErr.Error() == matcher.Expected, nil
31 | }
32 |
33 | var subMatcher omegaMatcher
34 | var hasSubMatcher bool
35 | if matcher.Expected != nil {
36 | subMatcher, hasSubMatcher = (matcher.Expected).(omegaMatcher)
37 | if hasSubMatcher {
38 | return subMatcher.Match(actualErr.Error())
39 | }
40 | }
41 |
42 | return false, fmt.Errorf("MatchError must be passed an error, string, or Matcher that can match on strings. Got:\n%s", format.Object(matcher.Expected, 1))
43 | }
44 |
45 | func (matcher *MatchErrorMatcher) FailureMessage(actual interface{}) (message string) {
46 | return format.Message(actual, "to match error", matcher.Expected)
47 | }
48 |
49 | func (matcher *MatchErrorMatcher) NegatedFailureMessage(actual interface{}) (message string) {
50 | return format.Message(actual, "not to match error", matcher.Expected)
51 | }
52 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/match_regexp_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "regexp"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type MatchRegexpMatcher struct {
11 | Regexp string
12 | Args []interface{}
13 | }
14 |
15 | func (matcher *MatchRegexpMatcher) Match(actual interface{}) (success bool, err error) {
16 | actualString, ok := toString(actual)
17 | if !ok {
18 | return false, fmt.Errorf("RegExp matcher requires a string or stringer.\nGot:%s", format.Object(actual, 1))
19 | }
20 |
21 | match, err := regexp.Match(matcher.regexp(), []byte(actualString))
22 | if err != nil {
23 | return false, fmt.Errorf("RegExp match failed to compile with error:\n\t%s", err.Error())
24 | }
25 |
26 | return match, nil
27 | }
28 |
29 | func (matcher *MatchRegexpMatcher) FailureMessage(actual interface{}) (message string) {
30 | return format.Message(actual, "to match regular expression", matcher.regexp())
31 | }
32 |
33 | func (matcher *MatchRegexpMatcher) NegatedFailureMessage(actual interface{}) (message string) {
34 | return format.Message(actual, "not to match regular expression", matcher.regexp())
35 | }
36 |
37 | func (matcher *MatchRegexpMatcher) regexp() string {
38 | re := matcher.Regexp
39 | if len(matcher.Args) > 0 {
40 | re = fmt.Sprintf(matcher.Regexp, matcher.Args...)
41 | }
42 | return re
43 | }
44 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/not.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "github.com/onsi/gomega/internal/oraclematcher"
5 | "github.com/onsi/gomega/types"
6 | )
7 |
8 | type NotMatcher struct {
9 | Matcher types.GomegaMatcher
10 | }
11 |
12 | func (m *NotMatcher) Match(actual interface{}) (bool, error) {
13 | success, err := m.Matcher.Match(actual)
14 | if err != nil {
15 | return false, err
16 | }
17 | return !success, nil
18 | }
19 |
20 | func (m *NotMatcher) FailureMessage(actual interface{}) (message string) {
21 | return m.Matcher.NegatedFailureMessage(actual) // works beautifully
22 | }
23 |
24 | func (m *NotMatcher) NegatedFailureMessage(actual interface{}) (message string) {
25 | return m.Matcher.FailureMessage(actual) // works beautifully
26 | }
27 |
28 | func (m *NotMatcher) MatchMayChangeInTheFuture(actual interface{}) bool {
29 | return oraclematcher.MatchMayChangeInTheFuture(m.Matcher, actual) // just return m.Matcher's value
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/panic_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 | "reflect"
6 |
7 | "github.com/onsi/gomega/format"
8 | )
9 |
10 | type PanicMatcher struct {
11 | object interface{}
12 | }
13 |
14 | func (matcher *PanicMatcher) Match(actual interface{}) (success bool, err error) {
15 | if actual == nil {
16 | return false, fmt.Errorf("PanicMatcher expects a non-nil actual.")
17 | }
18 |
19 | actualType := reflect.TypeOf(actual)
20 | if actualType.Kind() != reflect.Func {
21 | return false, fmt.Errorf("PanicMatcher expects a function. Got:\n%s", format.Object(actual, 1))
22 | }
23 | if !(actualType.NumIn() == 0 && actualType.NumOut() == 0) {
24 | return false, fmt.Errorf("PanicMatcher expects a function with no arguments and no return value. Got:\n%s", format.Object(actual, 1))
25 | }
26 |
27 | success = false
28 | defer func() {
29 | if e := recover(); e != nil {
30 | matcher.object = e
31 | success = true
32 | }
33 | }()
34 |
35 | reflect.ValueOf(actual).Call([]reflect.Value{})
36 |
37 | return
38 | }
39 |
40 | func (matcher *PanicMatcher) FailureMessage(actual interface{}) (message string) {
41 | return format.Message(actual, "to panic")
42 | }
43 |
44 | func (matcher *PanicMatcher) NegatedFailureMessage(actual interface{}) (message string) {
45 | return format.Message(actual, fmt.Sprintf("not to panic, but panicked with\n%s", format.Object(matcher.object, 1)))
46 | }
47 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/succeed_matcher.go:
--------------------------------------------------------------------------------
1 | package matchers
2 |
3 | import (
4 | "fmt"
5 |
6 | "github.com/onsi/gomega/format"
7 | )
8 |
9 | type SucceedMatcher struct {
10 | }
11 |
12 | func (matcher *SucceedMatcher) Match(actual interface{}) (success bool, err error) {
13 | // is purely nil?
14 | if actual == nil {
15 | return true, nil
16 | }
17 |
18 | // must be an 'error' type
19 | if !isError(actual) {
20 | return false, fmt.Errorf("Expected an error-type. Got:\n%s", format.Object(actual, 1))
21 | }
22 |
23 | // must be nil (or a pointer to a nil)
24 | return isNil(actual), nil
25 | }
26 |
27 | func (matcher *SucceedMatcher) FailureMessage(actual interface{}) (message string) {
28 | return fmt.Sprintf("Expected success, but got an error:\n%s\n%s", format.Object(actual, 1), format.IndentString(actual.(error).Error(), 1))
29 | }
30 |
31 | func (matcher *SucceedMatcher) NegatedFailureMessage(actual interface{}) (message string) {
32 | return "Expected failure, but got no error."
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/support/goraph/bipartitegraph/bipartitegraph.go:
--------------------------------------------------------------------------------
1 | package bipartitegraph
2 |
3 | import "errors"
4 | import "fmt"
5 |
6 | import . "github.com/onsi/gomega/matchers/support/goraph/node"
7 | import . "github.com/onsi/gomega/matchers/support/goraph/edge"
8 |
9 | type BipartiteGraph struct {
10 | Left NodeOrderedSet
11 | Right NodeOrderedSet
12 | Edges EdgeSet
13 | }
14 |
15 | func NewBipartiteGraph(leftValues, rightValues []interface{}, neighbours func(interface{}, interface{}) (bool, error)) (*BipartiteGraph, error) {
16 | left := NodeOrderedSet{}
17 | for i, _ := range leftValues {
18 | left = append(left, Node{Id: i})
19 | }
20 |
21 | right := NodeOrderedSet{}
22 | for j, _ := range rightValues {
23 | right = append(right, Node{Id: j + len(left)})
24 | }
25 |
26 | edges := EdgeSet{}
27 | for i, leftValue := range leftValues {
28 | for j, rightValue := range rightValues {
29 | neighbours, err := neighbours(leftValue, rightValue)
30 | if err != nil {
31 | return nil, errors.New(fmt.Sprintf("error determining adjacency for %v and %v: %s", leftValue, rightValue, err.Error()))
32 | }
33 |
34 | if neighbours {
35 | edges = append(edges, Edge{Node1: left[i], Node2: right[j]})
36 | }
37 | }
38 | }
39 |
40 | return &BipartiteGraph{left, right, edges}, nil
41 | }
42 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/support/goraph/edge/edge.go:
--------------------------------------------------------------------------------
1 | package edge
2 |
3 | import . "github.com/onsi/gomega/matchers/support/goraph/node"
4 |
5 | type Edge struct {
6 | Node1 Node
7 | Node2 Node
8 | }
9 |
10 | type EdgeSet []Edge
11 |
12 | func (ec EdgeSet) Free(node Node) bool {
13 | for _, e := range ec {
14 | if e.Node1 == node || e.Node2 == node {
15 | return false
16 | }
17 | }
18 |
19 | return true
20 | }
21 |
22 | func (ec EdgeSet) Contains(edge Edge) bool {
23 | for _, e := range ec {
24 | if e == edge {
25 | return true
26 | }
27 | }
28 |
29 | return false
30 | }
31 |
32 | func (ec EdgeSet) FindByNodes(node1, node2 Node) (Edge, bool) {
33 | for _, e := range ec {
34 | if (e.Node1 == node1 && e.Node2 == node2) || (e.Node1 == node2 && e.Node2 == node1) {
35 | return e, true
36 | }
37 | }
38 |
39 | return Edge{}, false
40 | }
41 |
42 | func (ec EdgeSet) SymmetricDifference(ec2 EdgeSet) EdgeSet {
43 | edgesToInclude := make(map[Edge]bool)
44 |
45 | for _, e := range ec {
46 | edgesToInclude[e] = true
47 | }
48 |
49 | for _, e := range ec2 {
50 | edgesToInclude[e] = !edgesToInclude[e]
51 | }
52 |
53 | result := EdgeSet{}
54 | for e, include := range edgesToInclude {
55 | if include {
56 | result = append(result, e)
57 | }
58 | }
59 |
60 | return result
61 | }
62 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/support/goraph/node/node.go:
--------------------------------------------------------------------------------
1 | package node
2 |
3 | type Node struct {
4 | Id int
5 | }
6 |
7 | type NodeOrderedSet []Node
8 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/matchers/support/goraph/util/util.go:
--------------------------------------------------------------------------------
1 | package util
2 |
3 | import "math"
4 |
5 | func Odd(n int) bool {
6 | return math.Mod(float64(n), 2.0) == 1.0
7 | }
8 |
--------------------------------------------------------------------------------
/vendor/github.com/onsi/gomega/types/types.go:
--------------------------------------------------------------------------------
1 | package types
2 |
3 | type GomegaFailHandler func(message string, callerSkip ...int)
4 |
5 | //A simple *testing.T interface wrapper
6 | type GomegaTestingT interface {
7 | Fatalf(format string, args ...interface{})
8 | }
9 |
10 | //All Gomega matchers must implement the GomegaMatcher interface
11 | //
12 | //For details on writing custom matchers, check out: http://onsi.github.io/gomega/#adding-your-own-matchers
13 | type GomegaMatcher interface {
14 | Match(actual interface{}) (success bool, err error)
15 | FailureMessage(actual interface{}) (message string)
16 | NegatedFailureMessage(actual interface{}) (message string)
17 | }
18 |
--------------------------------------------------------------------------------
/vendor/github.com/samuel/go-zookeeper/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2013, Samuel Stauffer
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above copyright
10 | notice, this list of conditions and the following disclaimer in the
11 | documentation and/or other materials provided with the distribution.
12 | * Neither the name of the author nor the
13 | names of its contributors may be used to endorse or promote products
14 | derived from this software without specific prior written permission.
15 |
16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
20 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 |
--------------------------------------------------------------------------------
/vendor/github.com/spaolacci/murmur3/.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 |
--------------------------------------------------------------------------------
/vendor/github.com/spaolacci/murmur3/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 |
3 | go:
4 | - 1.x
5 | - master
6 |
7 | script: go test
8 |
--------------------------------------------------------------------------------
/vendor/github.com/spaolacci/murmur3/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2013, Sébastien Paolacci.
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 | * Redistributions of source code must retain the above copyright
7 | notice, this list of conditions and the following disclaimer.
8 | * Redistributions in binary form must reproduce the above copyright
9 | notice, this list of conditions and the following disclaimer in the
10 | documentation and/or other materials provided with the distribution.
11 | * Neither the name of the library nor the
12 | names of its contributors may be used to endorse or promote products
13 | derived from this software without specific prior written permission.
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18 | DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY
19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 |
--------------------------------------------------------------------------------
/vendor/github.com/spaolacci/murmur3/murmur.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013, Sébastien Paolacci. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | /*
6 | Package murmur3 implements Austin Appleby's non-cryptographic MurmurHash3.
7 |
8 | Reference implementation:
9 | http://code.google.com/p/smhasher/wiki/MurmurHash3
10 |
11 | History, characteristics and (legacy) perfs:
12 | https://sites.google.com/site/murmurhash/
13 | https://sites.google.com/site/murmurhash/statistics
14 | */
15 | package murmur3
16 |
17 | type bmixer interface {
18 | bmix(p []byte) (tail []byte)
19 | Size() (n int)
20 | reset()
21 | }
22 |
23 | type digest struct {
24 | clen int // Digested input cumulative length.
25 | tail []byte // 0 to Size()-1 bytes view of `buf'.
26 | buf [16]byte // Expected (but not required) to be Size() large.
27 | seed uint32 // Seed for initializing the hash.
28 | bmixer
29 | }
30 |
31 | func (d *digest) BlockSize() int { return 1 }
32 |
33 | func (d *digest) Write(p []byte) (n int, err error) {
34 | n = len(p)
35 | d.clen += n
36 |
37 | if len(d.tail) > 0 {
38 | // Stick back pending bytes.
39 | nfree := d.Size() - len(d.tail) // nfree ∈ [1, d.Size()-1].
40 | if nfree < len(p) {
41 | // One full block can be formed.
42 | block := append(d.tail, p[:nfree]...)
43 | p = p[nfree:]
44 | _ = d.bmix(block) // No tail.
45 | } else {
46 | // Tail's buf is large enough to prevent reallocs.
47 | p = append(d.tail, p...)
48 | }
49 | }
50 |
51 | d.tail = d.bmix(p)
52 |
53 | // Keep own copy of the 0 to Size()-1 pending bytes.
54 | nn := copy(d.buf[:], d.tail)
55 | d.tail = d.buf[:nn]
56 |
57 | return n, nil
58 | }
59 |
60 | func (d *digest) Reset() {
61 | d.clen = 0
62 | d.tail = nil
63 | d.bmixer.reset()
64 | }
65 |
--------------------------------------------------------------------------------
/vendor/github.com/spaolacci/murmur3/murmur64.go:
--------------------------------------------------------------------------------
1 | package murmur3
2 |
3 | import (
4 | "hash"
5 | )
6 |
7 | // Make sure interfaces are correctly implemented.
8 | var (
9 | _ hash.Hash = new(digest64)
10 | _ hash.Hash64 = new(digest64)
11 | _ bmixer = new(digest64)
12 | )
13 |
14 | // digest64 is half a digest128.
15 | type digest64 digest128
16 |
17 | // New64 returns a 64-bit hasher
18 | func New64() hash.Hash64 { return New64WithSeed(0) }
19 |
20 | // New64WithSeed returns a 64-bit hasher set with explicit seed value
21 | func New64WithSeed(seed uint32) hash.Hash64 {
22 | d := (*digest64)(New128WithSeed(seed).(*digest128))
23 | return d
24 | }
25 |
26 | func (d *digest64) Sum(b []byte) []byte {
27 | h1 := d.Sum64()
28 | return append(b,
29 | byte(h1>>56), byte(h1>>48), byte(h1>>40), byte(h1>>32),
30 | byte(h1>>24), byte(h1>>16), byte(h1>>8), byte(h1))
31 | }
32 |
33 | func (d *digest64) Sum64() uint64 {
34 | h1, _ := (*digest128)(d).Sum128()
35 | return h1
36 | }
37 |
38 | // Sum64 returns the MurmurHash3 sum of data. It is equivalent to the
39 | // following sequence (without the extra burden and the extra allocation):
40 | // hasher := New64()
41 | // hasher.Write(data)
42 | // return hasher.Sum64()
43 | func Sum64(data []byte) uint64 { return Sum64WithSeed(data, 0) }
44 |
45 | // Sum64WithSeed returns the MurmurHash3 sum of data. It is equivalent to the
46 | // following sequence (without the extra burden and the extra allocation):
47 | // hasher := New64WithSeed(seed)
48 | // hasher.Write(data)
49 | // return hasher.Sum64()
50 | func Sum64WithSeed(data []byte, seed uint32) uint64 {
51 | d := &digest128{h1: uint64(seed), h2: uint64(seed)}
52 | d.seed = seed
53 | d.tail = d.bmix(data)
54 | d.clen = len(data)
55 | h1, _ := d.Sum128()
56 | return h1
57 | }
58 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/net/PATENTS:
--------------------------------------------------------------------------------
1 | Additional IP Rights Grant (Patents)
2 |
3 | "This implementation" means the copyrightable works distributed by
4 | Google as part of the Go project.
5 |
6 | Google hereby grants to You a perpetual, worldwide, non-exclusive,
7 | no-charge, royalty-free, irrevocable (except as stated in this section)
8 | patent license to make, have made, use, offer to sell, sell, import,
9 | transfer and otherwise run, modify and propagate the contents of this
10 | implementation of Go, where such license applies only to those patent
11 | claims, both currently owned or controlled by Google and acquired in
12 | the future, licensable by Google that are necessarily infringed by this
13 | implementation of Go. This grant does not include claims that would be
14 | infringed only as a consequence of further modification of this
15 | implementation. If you or your agent or exclusive licensee institute or
16 | order or agree to the institution of patent litigation against any
17 | entity (including a cross-claim or counterclaim in a lawsuit) alleging
18 | that this implementation of Go or any code incorporated within this
19 | implementation of Go constitutes direct or contributory patent
20 | infringement, or inducement of patent infringement, then any patent
21 | rights granted to you under this License for this implementation of Go
22 | shall terminate as of the date such litigation is filed.
23 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/PATENTS:
--------------------------------------------------------------------------------
1 | Additional IP Rights Grant (Patents)
2 |
3 | "This implementation" means the copyrightable works distributed by
4 | Google as part of the Go project.
5 |
6 | Google hereby grants to You a perpetual, worldwide, non-exclusive,
7 | no-charge, royalty-free, irrevocable (except as stated in this section)
8 | patent license to make, have made, use, offer to sell, sell, import,
9 | transfer and otherwise run, modify and propagate the contents of this
10 | implementation of Go, where such license applies only to those patent
11 | claims, both currently owned or controlled by Google and acquired in
12 | the future, licensable by Google that are necessarily infringed by this
13 | implementation of Go. This grant does not include claims that would be
14 | infringed only as a consequence of further modification of this
15 | implementation. If you or your agent or exclusive licensee institute or
16 | order or agree to the institution of patent litigation against any
17 | entity (including a cross-claim or counterclaim in a lawsuit) alleging
18 | that this implementation of Go or any code incorporated within this
19 | implementation of Go constitutes direct or contributory patent
20 | infringement, or inducement of patent infringement, then any patent
21 | rights granted to you under this License for this implementation of Go
22 | shall terminate as of the date such litigation is filed.
23 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/.gitignore:
--------------------------------------------------------------------------------
1 | _obj/
2 | unix.test
3 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, Darwin
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, Darwin
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 | // +build arm,darwin
7 |
8 | #include "textflag.h"
9 |
10 | //
11 | // System call support for ARM, Darwin
12 | //
13 |
14 | // Just jump to package syscall's implementation for all these functions.
15 | // The runtime may know about them.
16 |
17 | TEXT ·Syscall(SB),NOSPLIT,$0-28
18 | B syscall·Syscall(SB)
19 |
20 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
21 | B syscall·Syscall6(SB)
22 |
23 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
24 | B syscall·Syscall9(SB)
25 |
26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
27 | B syscall·RawSyscall(SB)
28 |
29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
30 | B syscall·RawSyscall6(SB)
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_darwin_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 | // +build arm64,darwin
7 |
8 | #include "textflag.h"
9 |
10 | //
11 | // System call support for AMD64, Darwin
12 | //
13 |
14 | // Just jump to package syscall's implementation for all these functions.
15 | // The runtime may know about them.
16 |
17 | TEXT ·Syscall(SB),NOSPLIT,$0-56
18 | B syscall·Syscall(SB)
19 |
20 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
21 | B syscall·Syscall6(SB)
22 |
23 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
24 | B syscall·Syscall9(SB)
25 |
26 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
27 | B syscall·RawSyscall(SB)
28 |
29 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
30 | B syscall·RawSyscall6(SB)
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_dragonfly_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, DragonFly
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_freebsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2012 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, FreeBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for 386, Linux
11 | //
12 |
13 | // See ../runtime/sys_linux_386.s for the reason why we always use int 0x80
14 | // instead of the glibc-specific "CALL 0x10(GS)".
15 | #define INVOKE_SYSCALL INT $0x80
16 |
17 | // Just jump to package syscall's implementation for all these functions.
18 | // The runtime may know about them.
19 |
20 | TEXT ·Syscall(SB),NOSPLIT,$0-28
21 | JMP syscall·Syscall(SB)
22 |
23 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
24 | JMP syscall·Syscall6(SB)
25 |
26 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
27 | CALL runtime·entersyscall(SB)
28 | MOVL trap+0(FP), AX // syscall entry
29 | MOVL a1+4(FP), BX
30 | MOVL a2+8(FP), CX
31 | MOVL a3+12(FP), DX
32 | MOVL $0, SI
33 | MOVL $0, DI
34 | INVOKE_SYSCALL
35 | MOVL AX, r1+16(FP)
36 | MOVL DX, r2+20(FP)
37 | CALL runtime·exitsyscall(SB)
38 | RET
39 |
40 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
41 | JMP syscall·RawSyscall(SB)
42 |
43 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
44 | JMP syscall·RawSyscall6(SB)
45 |
46 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
47 | MOVL trap+0(FP), AX // syscall entry
48 | MOVL a1+4(FP), BX
49 | MOVL a2+8(FP), CX
50 | MOVL a3+12(FP), DX
51 | MOVL $0, SI
52 | MOVL $0, DI
53 | INVOKE_SYSCALL
54 | MOVL AX, r1+16(FP)
55 | MOVL DX, r2+20(FP)
56 | RET
57 |
58 | TEXT ·socketcall(SB),NOSPLIT,$0-36
59 | JMP syscall·socketcall(SB)
60 |
61 | TEXT ·rawsocketcall(SB),NOSPLIT,$0-36
62 | JMP syscall·rawsocketcall(SB)
63 |
64 | TEXT ·seek(SB),NOSPLIT,$0-28
65 | JMP syscall·seek(SB)
66 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for AMD64, Linux
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
23 | CALL runtime·entersyscall(SB)
24 | MOVQ a1+8(FP), DI
25 | MOVQ a2+16(FP), SI
26 | MOVQ a3+24(FP), DX
27 | MOVQ $0, R10
28 | MOVQ $0, R8
29 | MOVQ $0, R9
30 | MOVQ trap+0(FP), AX // syscall entry
31 | SYSCALL
32 | MOVQ AX, r1+32(FP)
33 | MOVQ DX, r2+40(FP)
34 | CALL runtime·exitsyscall(SB)
35 | RET
36 |
37 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
38 | JMP syscall·RawSyscall(SB)
39 |
40 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
41 | JMP syscall·RawSyscall6(SB)
42 |
43 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
44 | MOVQ a1+8(FP), DI
45 | MOVQ a2+16(FP), SI
46 | MOVQ a3+24(FP), DX
47 | MOVQ $0, R10
48 | MOVQ $0, R8
49 | MOVQ $0, R9
50 | MOVQ trap+0(FP), AX // syscall entry
51 | SYSCALL
52 | MOVQ AX, r1+32(FP)
53 | MOVQ DX, r2+40(FP)
54 | RET
55 |
56 | TEXT ·gettimeofday(SB),NOSPLIT,$0-16
57 | JMP syscall·gettimeofday(SB)
58 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for arm, Linux
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
23 | BL runtime·entersyscall(SB)
24 | MOVW trap+0(FP), R7
25 | MOVW a1+4(FP), R0
26 | MOVW a2+8(FP), R1
27 | MOVW a3+12(FP), R2
28 | MOVW $0, R3
29 | MOVW $0, R4
30 | MOVW $0, R5
31 | SWI $0
32 | MOVW R0, r1+16(FP)
33 | MOVW $0, R0
34 | MOVW R0, r2+20(FP)
35 | BL runtime·exitsyscall(SB)
36 | RET
37 |
38 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
39 | B syscall·RawSyscall(SB)
40 |
41 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
42 | B syscall·RawSyscall6(SB)
43 |
44 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
45 | MOVW trap+0(FP), R7 // syscall entry
46 | MOVW a1+4(FP), R0
47 | MOVW a2+8(FP), R1
48 | MOVW a3+12(FP), R2
49 | SWI $0
50 | MOVW R0, r1+16(FP)
51 | MOVW $0, R0
52 | MOVW R0, r2+20(FP)
53 | RET
54 |
55 | TEXT ·seek(SB),NOSPLIT,$0-28
56 | B syscall·seek(SB)
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_arm64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build linux
6 | // +build arm64
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | // Just jump to package syscall's implementation for all these functions.
12 | // The runtime may know about them.
13 |
14 | TEXT ·Syscall(SB),NOSPLIT,$0-56
15 | B syscall·Syscall(SB)
16 |
17 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
18 | B syscall·Syscall6(SB)
19 |
20 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
21 | BL runtime·entersyscall(SB)
22 | MOVD a1+8(FP), R0
23 | MOVD a2+16(FP), R1
24 | MOVD a3+24(FP), R2
25 | MOVD $0, R3
26 | MOVD $0, R4
27 | MOVD $0, R5
28 | MOVD trap+0(FP), R8 // syscall entry
29 | SVC
30 | MOVD R0, r1+32(FP) // r1
31 | MOVD R1, r2+40(FP) // r2
32 | BL runtime·exitsyscall(SB)
33 | RET
34 |
35 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
36 | B syscall·RawSyscall(SB)
37 |
38 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
39 | B syscall·RawSyscall6(SB)
40 |
41 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
42 | MOVD a1+8(FP), R0
43 | MOVD a2+16(FP), R1
44 | MOVD a3+24(FP), R2
45 | MOVD $0, R3
46 | MOVD $0, R4
47 | MOVD $0, R5
48 | MOVD trap+0(FP), R8 // syscall entry
49 | SVC
50 | MOVD R0, r1+32(FP)
51 | MOVD R1, r2+40(FP)
52 | RET
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build linux
6 | // +build mips64 mips64le
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for mips64, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-56
19 | JMP syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
22 | JMP syscall·Syscall6(SB)
23 |
24 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
25 | JAL runtime·entersyscall(SB)
26 | MOVV a1+8(FP), R4
27 | MOVV a2+16(FP), R5
28 | MOVV a3+24(FP), R6
29 | MOVV R0, R7
30 | MOVV R0, R8
31 | MOVV R0, R9
32 | MOVV trap+0(FP), R2 // syscall entry
33 | SYSCALL
34 | MOVV R2, r1+32(FP)
35 | MOVV R3, r2+40(FP)
36 | JAL runtime·exitsyscall(SB)
37 | RET
38 |
39 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
40 | JMP syscall·RawSyscall(SB)
41 |
42 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
43 | JMP syscall·RawSyscall6(SB)
44 |
45 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
46 | MOVV a1+8(FP), R4
47 | MOVV a2+16(FP), R5
48 | MOVV a3+24(FP), R6
49 | MOVV R0, R7
50 | MOVV R0, R8
51 | MOVV R0, R9
52 | MOVV trap+0(FP), R2 // syscall entry
53 | SYSCALL
54 | MOVV R2, r1+32(FP)
55 | MOVV R3, r2+40(FP)
56 | RET
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build linux
6 | // +build mips mipsle
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for mips, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-28
19 | JMP syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
22 | JMP syscall·Syscall6(SB)
23 |
24 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
25 | JMP syscall·Syscall9(SB)
26 |
27 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-24
28 | JAL runtime·entersyscall(SB)
29 | MOVW a1+4(FP), R4
30 | MOVW a2+8(FP), R5
31 | MOVW a3+12(FP), R6
32 | MOVW R0, R7
33 | MOVW trap+0(FP), R2 // syscall entry
34 | SYSCALL
35 | MOVW R2, r1+16(FP) // r1
36 | MOVW R3, r2+20(FP) // r2
37 | JAL runtime·exitsyscall(SB)
38 | RET
39 |
40 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
41 | JMP syscall·RawSyscall(SB)
42 |
43 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
44 | JMP syscall·RawSyscall6(SB)
45 |
46 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24
47 | MOVW a1+4(FP), R4
48 | MOVW a2+8(FP), R5
49 | MOVW a3+12(FP), R6
50 | MOVW trap+0(FP), R2 // syscall entry
51 | SYSCALL
52 | MOVW R2, r1+16(FP)
53 | MOVW R3, r2+20(FP)
54 | RET
55 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2014 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build linux
6 | // +build ppc64 ppc64le
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for ppc64, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-56
19 | BR syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
22 | BR syscall·Syscall6(SB)
23 |
24 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
25 | BL runtime·entersyscall(SB)
26 | MOVD a1+8(FP), R3
27 | MOVD a2+16(FP), R4
28 | MOVD a3+24(FP), R5
29 | MOVD R0, R6
30 | MOVD R0, R7
31 | MOVD R0, R8
32 | MOVD trap+0(FP), R9 // syscall entry
33 | SYSCALL R9
34 | MOVD R3, r1+32(FP)
35 | MOVD R4, r2+40(FP)
36 | BL runtime·exitsyscall(SB)
37 | RET
38 |
39 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
40 | BR syscall·RawSyscall(SB)
41 |
42 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
43 | BR syscall·RawSyscall6(SB)
44 |
45 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
46 | MOVD a1+8(FP), R3
47 | MOVD a2+16(FP), R4
48 | MOVD a3+24(FP), R5
49 | MOVD R0, R6
50 | MOVD R0, R7
51 | MOVD R0, R8
52 | MOVD trap+0(FP), R9 // syscall entry
53 | SYSCALL R9
54 | MOVD R3, r1+32(FP)
55 | MOVD R4, r2+40(FP)
56 | RET
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_linux_s390x.s:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build s390x
6 | // +build linux
7 | // +build !gccgo
8 |
9 | #include "textflag.h"
10 |
11 | //
12 | // System calls for s390x, Linux
13 | //
14 |
15 | // Just jump to package syscall's implementation for all these functions.
16 | // The runtime may know about them.
17 |
18 | TEXT ·Syscall(SB),NOSPLIT,$0-56
19 | BR syscall·Syscall(SB)
20 |
21 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
22 | BR syscall·Syscall6(SB)
23 |
24 | TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
25 | BL runtime·entersyscall(SB)
26 | MOVD a1+8(FP), R2
27 | MOVD a2+16(FP), R3
28 | MOVD a3+24(FP), R4
29 | MOVD $0, R5
30 | MOVD $0, R6
31 | MOVD $0, R7
32 | MOVD trap+0(FP), R1 // syscall entry
33 | SYSCALL
34 | MOVD R2, r1+32(FP)
35 | MOVD R3, r2+40(FP)
36 | BL runtime·exitsyscall(SB)
37 | RET
38 |
39 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
40 | BR syscall·RawSyscall(SB)
41 |
42 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
43 | BR syscall·RawSyscall6(SB)
44 |
45 | TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
46 | MOVD a1+8(FP), R2
47 | MOVD a2+16(FP), R3
48 | MOVD a3+24(FP), R4
49 | MOVD $0, R5
50 | MOVD $0, R6
51 | MOVD $0, R7
52 | MOVD trap+0(FP), R1 // syscall entry
53 | SYSCALL
54 | MOVD R2, r1+32(FP)
55 | MOVD R3, r2+40(FP)
56 | RET
57 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_netbsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2013 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, NetBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_386.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for 386, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for AMD64, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-56
17 | JMP syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-80
20 | JMP syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-104
23 | JMP syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-56
26 | JMP syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
29 | JMP syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System call support for ARM, OpenBSD
11 | //
12 |
13 | // Just jump to package syscall's implementation for all these functions.
14 | // The runtime may know about them.
15 |
16 | TEXT ·Syscall(SB),NOSPLIT,$0-28
17 | B syscall·Syscall(SB)
18 |
19 | TEXT ·Syscall6(SB),NOSPLIT,$0-40
20 | B syscall·Syscall6(SB)
21 |
22 | TEXT ·Syscall9(SB),NOSPLIT,$0-52
23 | B syscall·Syscall9(SB)
24 |
25 | TEXT ·RawSyscall(SB),NOSPLIT,$0-28
26 | B syscall·RawSyscall(SB)
27 |
28 | TEXT ·RawSyscall6(SB),NOSPLIT,$0-40
29 | B syscall·RawSyscall6(SB)
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s:
--------------------------------------------------------------------------------
1 | // Copyright 2014 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !gccgo
6 |
7 | #include "textflag.h"
8 |
9 | //
10 | // System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go
11 | //
12 |
13 | TEXT ·sysvicall6(SB),NOSPLIT,$0-88
14 | JMP syscall·sysvicall6(SB)
15 |
16 | TEXT ·rawSysvicall6(SB),NOSPLIT,$0-88
17 | JMP syscall·rawSysvicall6(SB)
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/bluetooth_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // Bluetooth sockets and messages
6 |
7 | package unix
8 |
9 | // Bluetooth Protocols
10 | const (
11 | BTPROTO_L2CAP = 0
12 | BTPROTO_HCI = 1
13 | BTPROTO_SCO = 2
14 | BTPROTO_RFCOMM = 3
15 | BTPROTO_BNEP = 4
16 | BTPROTO_CMTP = 5
17 | BTPROTO_HIDP = 6
18 | BTPROTO_AVDTP = 7
19 | )
20 |
21 | const (
22 | HCI_CHANNEL_RAW = 0
23 | HCI_CHANNEL_USER = 1
24 | HCI_CHANNEL_MONITOR = 2
25 | HCI_CHANNEL_CONTROL = 3
26 | )
27 |
28 | // Socketoption Level
29 | const (
30 | SOL_BLUETOOTH = 0x112
31 | SOL_HCI = 0x0
32 | SOL_L2CAP = 0x6
33 | SOL_RFCOMM = 0x12
34 | SOL_SCO = 0x11
35 | )
36 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/constants.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | const (
10 | R_OK = 0x4
11 | W_OK = 0x2
12 | X_OK = 0x1
13 | )
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_darwin.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in Darwin's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of a Darwin device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev >> 24) & 0xff)
13 | }
14 |
15 | // Minor returns the minor component of a Darwin device number.
16 | func Minor(dev uint64) uint32 {
17 | return uint32(dev & 0xffffff)
18 | }
19 |
20 | // Mkdev returns a Darwin device number generated from the given major and minor
21 | // components.
22 | func Mkdev(major, minor uint32) uint64 {
23 | return (uint64(major) << 24) | uint64(minor)
24 | }
25 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_dragonfly.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in Dragonfly's sys/types.h header.
7 | //
8 | // The information below is extracted and adapted from sys/types.h:
9 | //
10 | // Minor gives a cookie instead of an index since in order to avoid changing the
11 | // meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
12 | // devices that don't use them.
13 |
14 | package unix
15 |
16 | // Major returns the major component of a DragonFlyBSD device number.
17 | func Major(dev uint64) uint32 {
18 | return uint32((dev >> 8) & 0xff)
19 | }
20 |
21 | // Minor returns the minor component of a DragonFlyBSD device number.
22 | func Minor(dev uint64) uint32 {
23 | return uint32(dev & 0xffff00ff)
24 | }
25 |
26 | // Mkdev returns a DragonFlyBSD device number generated from the given major and
27 | // minor components.
28 | func Mkdev(major, minor uint32) uint64 {
29 | return (uint64(major) << 8) | uint64(minor)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_freebsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in FreeBSD's sys/types.h header.
7 | //
8 | // The information below is extracted and adapted from sys/types.h:
9 | //
10 | // Minor gives a cookie instead of an index since in order to avoid changing the
11 | // meanings of bits 0-15 or wasting time and space shifting bits 16-31 for
12 | // devices that don't use them.
13 |
14 | package unix
15 |
16 | // Major returns the major component of a FreeBSD device number.
17 | func Major(dev uint64) uint32 {
18 | return uint32((dev >> 8) & 0xff)
19 | }
20 |
21 | // Minor returns the minor component of a FreeBSD device number.
22 | func Minor(dev uint64) uint32 {
23 | return uint32(dev & 0xffff00ff)
24 | }
25 |
26 | // Mkdev returns a FreeBSD device number generated from the given major and
27 | // minor components.
28 | func Mkdev(major, minor uint32) uint64 {
29 | return (uint64(major) << 8) | uint64(minor)
30 | }
31 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_linux.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used by the Linux kernel and glibc.
7 | //
8 | // The information below is extracted and adapted from bits/sysmacros.h in the
9 | // glibc sources:
10 | //
11 | // dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's
12 | // default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major
13 | // number and m is a hex digit of the minor number. This is backward compatible
14 | // with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also
15 | // backward compatible with the Linux kernel, which for some architectures uses
16 | // 32-bit dev_t, encoded as mmmM MMmm.
17 |
18 | package unix
19 |
20 | // Major returns the major component of a Linux device number.
21 | func Major(dev uint64) uint32 {
22 | major := uint32((dev & 0x00000000000fff00) >> 8)
23 | major |= uint32((dev & 0xfffff00000000000) >> 32)
24 | return major
25 | }
26 |
27 | // Minor returns the minor component of a Linux device number.
28 | func Minor(dev uint64) uint32 {
29 | minor := uint32((dev & 0x00000000000000ff) >> 0)
30 | minor |= uint32((dev & 0x00000ffffff00000) >> 12)
31 | return minor
32 | }
33 |
34 | // Mkdev returns a Linux device number generated from the given major and minor
35 | // components.
36 | func Mkdev(major, minor uint32) uint64 {
37 | dev := (uint64(major) & 0x00000fff) << 8
38 | dev |= (uint64(major) & 0xfffff000) << 32
39 | dev |= (uint64(minor) & 0x000000ff) << 0
40 | dev |= (uint64(minor) & 0xffffff00) << 12
41 | return dev
42 | }
43 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_netbsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in NetBSD's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of a NetBSD device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev & 0x000fff00) >> 8)
13 | }
14 |
15 | // Minor returns the minor component of a NetBSD device number.
16 | func Minor(dev uint64) uint32 {
17 | minor := uint32((dev & 0x000000ff) >> 0)
18 | minor |= uint32((dev & 0xfff00000) >> 12)
19 | return minor
20 | }
21 |
22 | // Mkdev returns a NetBSD device number generated from the given major and minor
23 | // components.
24 | func Mkdev(major, minor uint32) uint64 {
25 | dev := (uint64(major) << 8) & 0x000fff00
26 | dev |= (uint64(minor) << 12) & 0xfff00000
27 | dev |= (uint64(minor) << 0) & 0x000000ff
28 | return dev
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dev_openbsd.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // Functions to access/create device major and minor numbers matching the
6 | // encoding used in OpenBSD's sys/types.h header.
7 |
8 | package unix
9 |
10 | // Major returns the major component of an OpenBSD device number.
11 | func Major(dev uint64) uint32 {
12 | return uint32((dev & 0x0000ff00) >> 8)
13 | }
14 |
15 | // Minor returns the minor component of an OpenBSD device number.
16 | func Minor(dev uint64) uint32 {
17 | minor := uint32((dev & 0x000000ff) >> 0)
18 | minor |= uint32((dev & 0xffff0000) >> 8)
19 | return minor
20 | }
21 |
22 | // Mkdev returns an OpenBSD device number generated from the given major and minor
23 | // components.
24 | func Mkdev(major, minor uint32) uint64 {
25 | dev := (uint64(major) << 8) & 0x0000ff00
26 | dev |= (uint64(minor) << 8) & 0xffff0000
27 | dev |= (uint64(minor) << 0) & 0x000000ff
28 | return dev
29 | }
30 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/dirent.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build darwin dragonfly freebsd linux nacl netbsd openbsd solaris
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | // ParseDirent parses up to max directory entries in buf,
12 | // appending the names to names. It returns the number of
13 | // bytes consumed from buf, the number of entries added
14 | // to names, and the new names slice.
15 | func ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {
16 | return syscall.ParseDirent(buf, max, names)
17 | }
18 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/endian_big.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 | //
5 | // +build ppc64 s390x mips mips64
6 |
7 | package unix
8 |
9 | const isBigEndian = true
10 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/endian_little.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 | //
5 | // +build 386 amd64 amd64p32 arm arm64 ppc64le mipsle mips64le
6 |
7 | package unix
8 |
9 | const isBigEndian = false
10 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/env_unix.go:
--------------------------------------------------------------------------------
1 | // Copyright 2010 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build darwin dragonfly freebsd linux netbsd openbsd solaris
6 |
7 | // Unix environment variables.
8 |
9 | package unix
10 |
11 | import "syscall"
12 |
13 | func Getenv(key string) (value string, found bool) {
14 | return syscall.Getenv(key)
15 | }
16 |
17 | func Setenv(key, value string) error {
18 | return syscall.Setenv(key, value)
19 | }
20 |
21 | func Clearenv() {
22 | syscall.Clearenv()
23 | }
24 |
25 | func Environ() []string {
26 | return syscall.Environ()
27 | }
28 |
29 | func Unsetenv(key string) error {
30 | return syscall.Unsetenv(key)
31 | }
32 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl.go:
--------------------------------------------------------------------------------
1 | // Copyright 2014 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build darwin dragonfly freebsd linux netbsd openbsd
6 |
7 | package unix
8 |
9 | import "unsafe"
10 |
11 | // fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux
12 | // systems by flock_linux_32bit.go to be SYS_FCNTL64.
13 | var fcntl64Syscall uintptr = SYS_FCNTL
14 |
15 | // FcntlInt performs a fcntl syscall on fd with the provided command and argument.
16 | func FcntlInt(fd uintptr, cmd, arg int) (int, error) {
17 | valptr, _, err := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(arg))
18 | return int(valptr), err
19 | }
20 |
21 | // FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.
22 | func FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {
23 | _, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))
24 | if errno == 0 {
25 | return nil
26 | }
27 | return errno
28 | }
29 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go:
--------------------------------------------------------------------------------
1 | // +build linux,386 linux,arm linux,mips linux,mipsle
2 |
3 | // Copyright 2014 The Go Authors. All rights reserved.
4 | // Use of this source code is governed by a BSD-style
5 | // license that can be found in the LICENSE file.
6 |
7 | package unix
8 |
9 | func init() {
10 | // On 32-bit Linux systems, the fcntl syscall that matches Go's
11 | // Flock_t type is SYS_FCNTL64, not SYS_FCNTL.
12 | fcntl64Syscall = SYS_FCNTL64
13 | }
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo_c.c:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build gccgo
6 |
7 | #include
8 | #include
9 | #include
10 |
11 | #define _STRINGIFY2_(x) #x
12 | #define _STRINGIFY_(x) _STRINGIFY2_(x)
13 | #define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)
14 |
15 | // Call syscall from C code because the gccgo support for calling from
16 | // Go to C does not support varargs functions.
17 |
18 | struct ret {
19 | uintptr_t r;
20 | uintptr_t err;
21 | };
22 |
23 | struct ret
24 | gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
25 | {
26 | struct ret r;
27 |
28 | errno = 0;
29 | r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
30 | r.err = errno;
31 | return r;
32 | }
33 |
34 | uintptr_t
35 | gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)
36 | {
37 | return syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);
38 | }
39 |
40 | // Define the use function in C so that it is not inlined.
41 |
42 | extern void use(void *) __asm__ (GOSYM_PREFIX GOPKGPATH ".use") __attribute__((noinline));
43 |
44 | void
45 | use(void *p __attribute__ ((unused)))
46 | {
47 | }
48 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build gccgo,linux,amd64
6 |
7 | package unix
8 |
9 | import "syscall"
10 |
11 | //extern gettimeofday
12 | func realGettimeofday(*Timeval, *byte) int32
13 |
14 | func gettimeofday(tv *Timeval) (err syscall.Errno) {
15 | r := realGettimeofday(tv, nil)
16 | if r < 0 {
17 | return syscall.GetErrno()
18 | }
19 | return 0
20 | }
21 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/mksysnum_darwin.pl:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env perl
2 | # Copyright 2009 The Go Authors. All rights reserved.
3 | # Use of this source code is governed by a BSD-style
4 | # license that can be found in the LICENSE file.
5 | #
6 | # Generate system call table for Darwin from sys/syscall.h
7 |
8 | use strict;
9 |
10 | if($ENV{'GOARCH'} eq "" || $ENV{'GOOS'} eq "") {
11 | print STDERR "GOARCH or GOOS not defined in environment\n";
12 | exit 1;
13 | }
14 |
15 | my $command = "mksysnum_darwin.pl " . join(' ', @ARGV);
16 |
17 | print <){
29 | if(/^#define\s+SYS_(\w+)\s+([0-9]+)/){
30 | my $name = $1;
31 | my $num = $2;
32 | $name =~ y/a-z/A-Z/;
33 | print " SYS_$name = $num;"
34 | }
35 | }
36 |
37 | print <){
30 | if(/^([0-9]+)\s+STD\s+({ \S+\s+(\w+).*)$/){
31 | my $num = $1;
32 | my $proto = $2;
33 | my $name = "SYS_$3";
34 | $name =~ y/a-z/A-Z/;
35 |
36 | # There are multiple entries for enosys and nosys, so comment them out.
37 | if($name =~ /^SYS_E?NOSYS$/){
38 | $name = "// $name";
39 | }
40 | if($name eq 'SYS_SYS_EXIT'){
41 | $name = 'SYS_EXIT';
42 | }
43 |
44 | print " $name = $num; // $proto\n";
45 | }
46 | }
47 |
48 | print <){
30 | if(/^([0-9]+)\s+\S+\s+STD\s+({ \S+\s+(\w+).*)$/){
31 | my $num = $1;
32 | my $proto = $2;
33 | my $name = "SYS_$3";
34 | $name =~ y/a-z/A-Z/;
35 |
36 | # There are multiple entries for enosys and nosys, so comment them out.
37 | if($name =~ /^SYS_E?NOSYS$/){
38 | $name = "// $name";
39 | }
40 | if($name eq 'SYS_SYS_EXIT'){
41 | $name = 'SYS_EXIT';
42 | }
43 |
44 | print " $name = $num; // $proto\n";
45 | }
46 | }
47 |
48 | print <){
31 | if($line =~ /^(.*)\\$/) {
32 | # Handle continuation
33 | $line = $1;
34 | $_ =~ s/^\s+//;
35 | $line .= $_;
36 | } else {
37 | # New line
38 | $line = $_;
39 | }
40 | next if $line =~ /\\$/;
41 | if($line =~ /^([0-9]+)\s+((STD)|(NOERR))\s+(RUMP\s+)?({\s+\S+\s*\*?\s*\|(\S+)\|(\S*)\|(\w+).*\s+})(\s+(\S+))?$/) {
42 | my $num = $1;
43 | my $proto = $6;
44 | my $compat = $8;
45 | my $name = "$7_$9";
46 |
47 | $name = "$7_$11" if $11 ne '';
48 | $name =~ y/a-z/A-Z/;
49 |
50 | if($compat eq '' || $compat eq '13' || $compat eq '30' || $compat eq '50') {
51 | print " $name = $num; // $proto\n";
52 | }
53 | }
54 | }
55 |
56 | print <){
30 | if(/^([0-9]+)\s+STD\s+(NOLOCK\s+)?({ \S+\s+\*?(\w+).*)$/){
31 | my $num = $1;
32 | my $proto = $3;
33 | my $name = $4;
34 | $name =~ y/a-z/A-Z/;
35 |
36 | # There are multiple entries for enosys and nosys, so comment them out.
37 | if($name =~ /^SYS_E?NOSYS$/){
38 | $name = "// $name";
39 | }
40 | if($name eq 'SYS_SYS_EXIT'){
41 | $name = 'SYS_EXIT';
42 | }
43 |
44 | print " $name = $num; // $proto\n";
45 | }
46 | }
47 |
48 | print <= 10 {
20 | buf[i] = byte(val%10 + '0')
21 | i--
22 | val /= 10
23 | }
24 | buf[i] = byte(val + '0')
25 | return string(buf[i:])
26 | }
27 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build 386,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
20 | }
21 |
22 | //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
23 | func Gettimeofday(tv *Timeval) (err error) {
24 | // The tv passed to gettimeofday must be non-nil
25 | // but is otherwise unused. The answers come back
26 | // in the two registers.
27 | sec, usec, err := gettimeofday(tv)
28 | tv.Sec = int32(sec)
29 | tv.Usec = int32(usec)
30 | return err
31 | }
32 |
33 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
34 | k.Ident = uint32(fd)
35 | k.Filter = int16(mode)
36 | k.Flags = uint16(flags)
37 | }
38 |
39 | func (iov *Iovec) SetLen(length int) {
40 | iov.Len = uint32(length)
41 | }
42 |
43 | func (msghdr *Msghdr) SetControllen(length int) {
44 | msghdr.Controllen = uint32(length)
45 | }
46 |
47 | func (cmsg *Cmsghdr) SetLen(length int) {
48 | cmsg.Len = uint32(length)
49 | }
50 |
51 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
52 | var length = uint64(count)
53 |
54 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
55 |
56 | written = int(length)
57 |
58 | if e1 != 0 {
59 | err = e1
60 | }
61 | return
62 | }
63 |
64 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
65 |
66 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
67 | // of darwin/386 the syscall is called sysctl instead of __sysctl.
68 | const SYS___SYSCTL = SYS_SYSCTL
69 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build amd64,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: int32(usec)}
20 | }
21 |
22 | //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
23 | func Gettimeofday(tv *Timeval) (err error) {
24 | // The tv passed to gettimeofday must be non-nil
25 | // but is otherwise unused. The answers come back
26 | // in the two registers.
27 | sec, usec, err := gettimeofday(tv)
28 | tv.Sec = sec
29 | tv.Usec = usec
30 | return err
31 | }
32 |
33 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
34 | k.Ident = uint64(fd)
35 | k.Filter = int16(mode)
36 | k.Flags = uint16(flags)
37 | }
38 |
39 | func (iov *Iovec) SetLen(length int) {
40 | iov.Len = uint64(length)
41 | }
42 |
43 | func (msghdr *Msghdr) SetControllen(length int) {
44 | msghdr.Controllen = uint32(length)
45 | }
46 |
47 | func (cmsg *Cmsghdr) SetLen(length int) {
48 | cmsg.Len = uint32(length)
49 | }
50 |
51 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
52 | var length = uint64(count)
53 |
54 | _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
55 |
56 | written = int(length)
57 |
58 | if e1 != 0 {
59 | err = e1
60 | }
61 | return
62 | }
63 |
64 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
65 |
66 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
67 | // of darwin/amd64 the syscall is called sysctl instead of __sysctl.
68 | const SYS___SYSCTL = SYS_SYSCTL
69 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | package unix
6 |
7 | import (
8 | "syscall"
9 | "unsafe"
10 | )
11 |
12 | func setTimespec(sec, nsec int64) Timespec {
13 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
14 | }
15 |
16 | func setTimeval(sec, usec int64) Timeval {
17 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
18 | }
19 |
20 | //sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error)
21 | func Gettimeofday(tv *Timeval) (err error) {
22 | // The tv passed to gettimeofday must be non-nil
23 | // but is otherwise unused. The answers come back
24 | // in the two registers.
25 | sec, usec, err := gettimeofday(tv)
26 | tv.Sec = int32(sec)
27 | tv.Usec = int32(usec)
28 | return err
29 | }
30 |
31 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
32 | k.Ident = uint32(fd)
33 | k.Filter = int16(mode)
34 | k.Flags = uint16(flags)
35 | }
36 |
37 | func (iov *Iovec) SetLen(length int) {
38 | iov.Len = uint32(length)
39 | }
40 |
41 | func (msghdr *Msghdr) SetControllen(length int) {
42 | msghdr.Controllen = uint32(length)
43 | }
44 |
45 | func (cmsg *Cmsghdr) SetLen(length int) {
46 | cmsg.Len = uint32(length)
47 | }
48 |
49 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
50 | var length = uint64(count)
51 |
52 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(*offset>>32), uintptr(unsafe.Pointer(&length)), 0, 0, 0, 0)
53 |
54 | written = int(length)
55 |
56 | if e1 != 0 {
57 | err = e1
58 | }
59 | return
60 | }
61 |
62 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
63 |
64 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
65 | // of darwin/arm the syscall is called sysctl instead of __sysctl.
66 | const SYS___SYSCTL = SYS_SYSCTL
67 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build arm64,darwin
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: int32(usec)}
20 | }
21 |
22 | //sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error)
23 | func Gettimeofday(tv *Timeval) (err error) {
24 | // The tv passed to gettimeofday must be non-nil
25 | // but is otherwise unused. The answers come back
26 | // in the two registers.
27 | sec, usec, err := gettimeofday(tv)
28 | tv.Sec = sec
29 | tv.Usec = usec
30 | return err
31 | }
32 |
33 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
34 | k.Ident = uint64(fd)
35 | k.Filter = int16(mode)
36 | k.Flags = uint16(flags)
37 | }
38 |
39 | func (iov *Iovec) SetLen(length int) {
40 | iov.Len = uint64(length)
41 | }
42 |
43 | func (msghdr *Msghdr) SetControllen(length int) {
44 | msghdr.Controllen = uint32(length)
45 | }
46 |
47 | func (cmsg *Cmsghdr) SetLen(length int) {
48 | cmsg.Len = uint32(length)
49 | }
50 |
51 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
52 | var length = uint64(count)
53 |
54 | _, _, e1 := Syscall6(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(unsafe.Pointer(&length)), 0, 0)
55 |
56 | written = int(length)
57 |
58 | if e1 != 0 {
59 | err = e1
60 | }
61 | return
62 | }
63 |
64 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic
65 |
66 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
67 | // of darwin/arm64 the syscall is called sysctl instead of __sysctl.
68 | const SYS___SYSCTL = SYS_SYSCTL
69 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build amd64,dragonfly
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build 386,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: int32(sec), Nsec: int32(nsec)}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: int32(sec), Usec: int32(usec)}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint32(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint32(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build amd64,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: nsec}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: usec}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint64(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint64(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2012 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build arm,freebsd
6 |
7 | package unix
8 |
9 | import (
10 | "syscall"
11 | "unsafe"
12 | )
13 |
14 | func setTimespec(sec, nsec int64) Timespec {
15 | return Timespec{Sec: sec, Nsec: int32(nsec)}
16 | }
17 |
18 | func setTimeval(sec, usec int64) Timeval {
19 | return Timeval{Sec: sec, Usec: int32(usec)}
20 | }
21 |
22 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
23 | k.Ident = uint32(fd)
24 | k.Filter = int16(mode)
25 | k.Flags = uint16(flags)
26 | }
27 |
28 | func (iov *Iovec) SetLen(length int) {
29 | iov.Len = uint32(length)
30 | }
31 |
32 | func (msghdr *Msghdr) SetControllen(length int) {
33 | msghdr.Controllen = uint32(length)
34 | }
35 |
36 | func (cmsg *Cmsghdr) SetLen(length int) {
37 | cmsg.Len = uint32(length)
38 | }
39 |
40 | func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
41 | var writtenOut uint64 = 0
42 | _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)
43 |
44 | written = int(writtenOut)
45 |
46 | if e1 != 0 {
47 | err = e1
48 | }
49 | return
50 | }
51 |
52 | func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)
53 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build amd64,linux
6 | // +build !gccgo
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | //go:noescape
13 | func gettimeofday(tv *Timeval) (err syscall.Errno)
14 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build linux,!gccgo
6 |
7 | package unix
8 |
9 | // SyscallNoError may be used instead of Syscall for syscalls that don't fail.
10 | func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
11 |
12 | // RawSyscallNoError may be used instead of RawSyscall for syscalls that don't
13 | // fail.
14 | func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)
15 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_linux_gccgo.go:
--------------------------------------------------------------------------------
1 | // Copyright 2018 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build linux
6 | // +build gccgo
7 | // +build 386 arm
8 |
9 | package unix
10 |
11 | import (
12 | "syscall"
13 | "unsafe"
14 | )
15 |
16 | func seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno) {
17 | offsetLow := uint32(offset & 0xffffffff)
18 | offsetHigh := uint32((offset >> 32) & 0xffffffff)
19 | _, _, err = Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)
20 | return newoffset, err
21 | }
22 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build 386,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build amd64,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build arm,netbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = uint32(mode)
20 | k.Flags = uint32(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build 386,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build amd64,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: usec}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint64(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint64(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
35 | // SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions
36 | // of openbsd/amd64 the syscall is called sysctl instead of __sysctl.
37 | const SYS___SYSCTL = SYS_SYSCTL
38 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go:
--------------------------------------------------------------------------------
1 | // Copyright 2017 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build arm,openbsd
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: int32(nsec)}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: int32(usec)}
15 | }
16 |
17 | func SetKevent(k *Kevent_t, fd, mode, flags int) {
18 | k.Ident = uint32(fd)
19 | k.Filter = int16(mode)
20 | k.Flags = uint16(flags)
21 | }
22 |
23 | func (iov *Iovec) SetLen(length int) {
24 | iov.Len = uint32(length)
25 | }
26 |
27 | func (msghdr *Msghdr) SetControllen(length int) {
28 | msghdr.Controllen = uint32(length)
29 | }
30 |
31 | func (cmsg *Cmsghdr) SetLen(length int) {
32 | cmsg.Len = uint32(length)
33 | }
34 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go:
--------------------------------------------------------------------------------
1 | // Copyright 2009 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build amd64,solaris
6 |
7 | package unix
8 |
9 | func setTimespec(sec, nsec int64) Timespec {
10 | return Timespec{Sec: sec, Nsec: nsec}
11 | }
12 |
13 | func setTimeval(sec, usec int64) Timeval {
14 | return Timeval{Sec: sec, Usec: usec}
15 | }
16 |
17 | func (iov *Iovec) SetLen(length int) {
18 | iov.Len = uint64(length)
19 | }
20 |
21 | func (cmsg *Cmsghdr) SetLen(length int) {
22 | cmsg.Len = uint32(length)
23 | }
24 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/syscall_unix_gc.go:
--------------------------------------------------------------------------------
1 | // Copyright 2016 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build darwin dragonfly freebsd linux netbsd openbsd solaris
6 | // +build !gccgo
7 |
8 | package unix
9 |
10 | import "syscall"
11 |
12 | func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
13 | func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
14 | func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)
15 | func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)
16 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracearm_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(arm, arm64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build arm arm64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsArm is the registers used by arm binaries.
11 | type PtraceRegsArm struct {
12 | Uregs [18]uint32
13 | }
14 |
15 | // PtraceGetRegsArm fetches the registers used by arm binaries.
16 | func PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {
17 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
18 | }
19 |
20 | // PtraceSetRegsArm sets the registers used by arm binaries.
21 | func PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {
22 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
23 | }
24 |
25 | // PtraceRegsArm64 is the registers used by arm64 binaries.
26 | type PtraceRegsArm64 struct {
27 | Regs [31]uint64
28 | Sp uint64
29 | Pc uint64
30 | Pstate uint64
31 | }
32 |
33 | // PtraceGetRegsArm64 fetches the registers used by arm64 binaries.
34 | func PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {
35 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
36 | }
37 |
38 | // PtraceSetRegsArm64 sets the registers used by arm64 binaries.
39 | func PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {
40 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
41 | }
42 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracemips_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(mips, mips64). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build mips mips64
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsMips is the registers used by mips binaries.
11 | type PtraceRegsMips struct {
12 | Regs [32]uint64
13 | Lo uint64
14 | Hi uint64
15 | Epc uint64
16 | Badvaddr uint64
17 | Status uint64
18 | Cause uint64
19 | }
20 |
21 | // PtraceGetRegsMips fetches the registers used by mips binaries.
22 | func PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {
23 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
24 | }
25 |
26 | // PtraceSetRegsMips sets the registers used by mips binaries.
27 | func PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {
28 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
29 | }
30 |
31 | // PtraceRegsMips64 is the registers used by mips64 binaries.
32 | type PtraceRegsMips64 struct {
33 | Regs [32]uint64
34 | Lo uint64
35 | Hi uint64
36 | Epc uint64
37 | Badvaddr uint64
38 | Status uint64
39 | Cause uint64
40 | }
41 |
42 | // PtraceGetRegsMips64 fetches the registers used by mips64 binaries.
43 | func PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {
44 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
45 | }
46 |
47 | // PtraceSetRegsMips64 sets the registers used by mips64 binaries.
48 | func PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {
49 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/sys/unix/zptracemipsle_linux.go:
--------------------------------------------------------------------------------
1 | // Code generated by linux/mkall.go generatePtracePair(mipsle, mips64le). DO NOT EDIT.
2 |
3 | // +build linux
4 | // +build mipsle mips64le
5 |
6 | package unix
7 |
8 | import "unsafe"
9 |
10 | // PtraceRegsMipsle is the registers used by mipsle binaries.
11 | type PtraceRegsMipsle struct {
12 | Regs [32]uint64
13 | Lo uint64
14 | Hi uint64
15 | Epc uint64
16 | Badvaddr uint64
17 | Status uint64
18 | Cause uint64
19 | }
20 |
21 | // PtraceGetRegsMipsle fetches the registers used by mipsle binaries.
22 | func PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {
23 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
24 | }
25 |
26 | // PtraceSetRegsMipsle sets the registers used by mipsle binaries.
27 | func PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {
28 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
29 | }
30 |
31 | // PtraceRegsMips64le is the registers used by mips64le binaries.
32 | type PtraceRegsMips64le struct {
33 | Regs [32]uint64
34 | Lo uint64
35 | Hi uint64
36 | Epc uint64
37 | Badvaddr uint64
38 | Status uint64
39 | Cause uint64
40 | }
41 |
42 | // PtraceGetRegsMips64le fetches the registers used by mips64le binaries.
43 | func PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {
44 | return ptrace(PTRACE_GETREGS, pid, 0, uintptr(unsafe.Pointer(regsout)))
45 | }
46 |
47 | // PtraceSetRegsMips64le sets the registers used by mips64le binaries.
48 | func PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {
49 | return ptrace(PTRACE_SETREGS, pid, 0, uintptr(unsafe.Pointer(regs)))
50 | }
51 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/AUTHORS:
--------------------------------------------------------------------------------
1 | # This source code refers to The Go Authors for copyright purposes.
2 | # The master list of authors is in the main Go distribution,
3 | # visible at http://tip.golang.org/AUTHORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/CONTRIBUTORS:
--------------------------------------------------------------------------------
1 | # This source code was written by the Go contributors.
2 | # The master list of contributors is in the main Go distribution,
3 | # visible at http://tip.golang.org/CONTRIBUTORS.
4 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2009 The Go Authors. All rights reserved.
2 |
3 | Redistribution and use in source and binary forms, with or without
4 | modification, are permitted provided that the following conditions are
5 | met:
6 |
7 | * Redistributions of source code must retain the above copyright
8 | notice, this list of conditions and the following disclaimer.
9 | * Redistributions in binary form must reproduce the above
10 | copyright notice, this list of conditions and the following disclaimer
11 | in the documentation and/or other materials provided with the
12 | distribution.
13 | * Neither the name of Google Inc. nor the names of its
14 | contributors may be used to endorse or promote products derived from
15 | this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/PATENTS:
--------------------------------------------------------------------------------
1 | Additional IP Rights Grant (Patents)
2 |
3 | "This implementation" means the copyrightable works distributed by
4 | Google as part of the Go project.
5 |
6 | Google hereby grants to You a perpetual, worldwide, non-exclusive,
7 | no-charge, royalty-free, irrevocable (except as stated in this section)
8 | patent license to make, have made, use, offer to sell, sell, import,
9 | transfer and otherwise run, modify and propagate the contents of this
10 | implementation of Go, where such license applies only to those patent
11 | claims, both currently owned or controlled by Google and acquired in
12 | the future, licensable by Google that are necessarily infringed by this
13 | implementation of Go. This grant does not include claims that would be
14 | infringed only as a consequence of further modification of this
15 | implementation. If you or your agent or exclusive licensee institute or
16 | order or agree to the institution of patent litigation against any
17 | entity (including a cross-claim or counterclaim in a lawsuit) alleging
18 | that this implementation of Go or any code incorporated within this
19 | implementation of Go constitutes direct or contributory patent
20 | infringement, or inducement of patent infringement, then any patent
21 | rights granted to you under this License for this implementation of Go
22 | shall terminate as of the date such litigation is filed.
23 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/encoding/japanese/all.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | package japanese
6 |
7 | import (
8 | "golang.org/x/text/encoding"
9 | )
10 |
11 | // All is a list of all defined encodings in this package.
12 | var All = []encoding.Encoding{EUCJP, ISO2022JP, ShiftJIS}
13 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/encoding/simplifiedchinese/all.go:
--------------------------------------------------------------------------------
1 | // Copyright 2015 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | package simplifiedchinese
6 |
7 | import (
8 | "golang.org/x/text/encoding"
9 | )
10 |
11 | // All is a list of all defined encodings in this package.
12 | var All = []encoding.Encoding{GB18030, GBK, HZGB2312}
13 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/Makefile:
--------------------------------------------------------------------------------
1 | # Copyright 2013 The Go Authors. All rights reserved.
2 | # Use of this source code is governed by a BSD-style
3 | # license that can be found in the LICENSE file.
4 |
5 | CLEANFILES+=maketables
6 |
7 | maketables: maketables.go
8 | go build $^
9 |
10 | tables: maketables
11 | ./maketables > tables.go
12 | gofmt -w -s tables.go
13 |
14 | # Build (but do not run) maketables during testing,
15 | # just to make sure it still compiles.
16 | testshort: maketables
17 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/common.go:
--------------------------------------------------------------------------------
1 | // Code generated by running "go generate" in golang.org/x/text. DO NOT EDIT.
2 |
3 | package language
4 |
5 | // This file contains code common to the maketables.go and the package code.
6 |
7 | // langAliasType is the type of an alias in langAliasMap.
8 | type langAliasType int8
9 |
10 | const (
11 | langDeprecated langAliasType = iota
12 | langMacro
13 | langLegacy
14 |
15 | langAliasTypeUnknown langAliasType = -1
16 | )
17 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/gen_common.go:
--------------------------------------------------------------------------------
1 | // Copyright 2014 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build ignore
6 |
7 | package main
8 |
9 | // This file contains code common to the maketables.go and the package code.
10 |
11 | // langAliasType is the type of an alias in langAliasMap.
12 | type langAliasType int8
13 |
14 | const (
15 | langDeprecated langAliasType = iota
16 | langMacro
17 | langLegacy
18 |
19 | langAliasTypeUnknown langAliasType = -1
20 | )
21 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/go1_1.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build !go1.2
6 |
7 | package language
8 |
9 | import "sort"
10 |
11 | func sortStable(s sort.Interface) {
12 | ss := stableSort{
13 | s: s,
14 | pos: make([]int, s.Len()),
15 | }
16 | for i := range ss.pos {
17 | ss.pos[i] = i
18 | }
19 | sort.Sort(&ss)
20 | }
21 |
22 | type stableSort struct {
23 | s sort.Interface
24 | pos []int
25 | }
26 |
27 | func (s *stableSort) Len() int {
28 | return len(s.pos)
29 | }
30 |
31 | func (s *stableSort) Less(i, j int) bool {
32 | return s.s.Less(i, j) || !s.s.Less(j, i) && s.pos[i] < s.pos[j]
33 | }
34 |
35 | func (s *stableSort) Swap(i, j int) {
36 | s.s.Swap(i, j)
37 | s.pos[i], s.pos[j] = s.pos[j], s.pos[i]
38 | }
39 |
--------------------------------------------------------------------------------
/vendor/golang.org/x/text/language/go1_2.go:
--------------------------------------------------------------------------------
1 | // Copyright 2013 The Go Authors. All rights reserved.
2 | // Use of this source code is governed by a BSD-style
3 | // license that can be found in the LICENSE file.
4 |
5 | // +build go1.2
6 |
7 | package language
8 |
9 | import "sort"
10 |
11 | var sortStable = sort.Stable
12 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/.travis.yml:
--------------------------------------------------------------------------------
1 | language: go
2 |
3 | go:
4 | - 1.4
5 | - 1.5
6 | - 1.6
7 | - 1.7
8 | - 1.8
9 | - 1.9
10 | - tip
11 |
12 | go_import_path: gopkg.in/yaml.v2
13 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/LICENSE.libyaml:
--------------------------------------------------------------------------------
1 | The following files were ported to Go from C files of libyaml, and thus
2 | are still covered by their original copyright and license:
3 |
4 | apic.go
5 | emitterc.go
6 | parserc.go
7 | readerc.go
8 | scannerc.go
9 | writerc.go
10 | yamlh.go
11 | yamlprivateh.go
12 |
13 | Copyright (c) 2006 Kirill Simonov
14 |
15 | Permission is hereby granted, free of charge, to any person obtaining a copy of
16 | this software and associated documentation files (the "Software"), to deal in
17 | the Software without restriction, including without limitation the rights to
18 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
19 | of the Software, and to permit persons to whom the Software is furnished to do
20 | so, subject to the following conditions:
21 |
22 | The above copyright notice and this permission notice shall be included in all
23 | copies or substantial portions of the Software.
24 |
25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31 | SOFTWARE.
32 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/NOTICE:
--------------------------------------------------------------------------------
1 | Copyright 2011-2016 Canonical Ltd.
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 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/go.mod:
--------------------------------------------------------------------------------
1 | module "gopkg.in/yaml.v2"
2 |
3 | require (
4 | "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405
5 | )
6 |
--------------------------------------------------------------------------------
/vendor/gopkg.in/yaml.v2/writerc.go:
--------------------------------------------------------------------------------
1 | package yaml
2 |
3 | // Set the writer error and return false.
4 | func yaml_emitter_set_writer_error(emitter *yaml_emitter_t, problem string) bool {
5 | emitter.error = yaml_WRITER_ERROR
6 | emitter.problem = problem
7 | return false
8 | }
9 |
10 | // Flush the output buffer.
11 | func yaml_emitter_flush(emitter *yaml_emitter_t) bool {
12 | if emitter.write_handler == nil {
13 | panic("write handler not set")
14 | }
15 |
16 | // Check if the buffer is empty.
17 | if emitter.buffer_pos == 0 {
18 | return true
19 | }
20 |
21 | if err := emitter.write_handler(emitter, emitter.buffer[:emitter.buffer_pos]); err != nil {
22 | return yaml_emitter_set_writer_error(emitter, "write error: "+err.Error())
23 | }
24 | emitter.buffer_pos = 0
25 | return true
26 | }
27 |
--------------------------------------------------------------------------------