本文整理汇总了Golang中github.com/cockroachdb/cockroach/server.TestServer类的典型用法代码示例。如果您正苦于以下问题:Golang TestServer类的具体用法?Golang TestServer怎么用?Golang TestServer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TestServer类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: PGUrl
// PGUrl returns a postgres connection url which connects to this server with
// the given user. Returns a connection string and a cleanup function which must
// be called after any connection created using the string has been closed.
//
// In order to connect securely using postgres, this method will create
// temporary on-disk copies of certain embedded security certificates. The
// certificates will be created as temporary files in the provided directory,
// and their filenames will have the provided prefix. The returned cleanup
// function will delete these temporary files.
func PGUrl(t util.Tester, ts *server.TestServer, user, tempDir, prefix string) (url.URL, func()) {
host, port, err := net.SplitHostPort(ts.PGAddr())
if err != nil {
t.Fatal(err)
}
caPath := filepath.Join(security.EmbeddedCertsDir, "ca.crt")
certPath := security.ClientCertPath(security.EmbeddedCertsDir, user)
keyPath := security.ClientKeyPath(security.EmbeddedCertsDir, user)
// Copy these assets to disk from embedded strings, so this test can
// run from a standalone binary.
tempCAPath, tempCACleanup := securitytest.TempRestrictedCopy(t, caPath, tempDir, "TestLogic_ca")
tempCertPath, tempCertCleanup := securitytest.TempRestrictedCopy(t, certPath, tempDir, "TestLogic_cert")
tempKeyPath, tempKeyCleanup := securitytest.TempRestrictedCopy(t, keyPath, tempDir, "TestLogic_key")
return url.URL{
Scheme: "postgres",
User: url.User(user),
Host: net.JoinHostPort(host, port),
RawQuery: fmt.Sprintf("sslmode=verify-full&sslrootcert=%s&sslcert=%s&sslkey=%s",
url.QueryEscape(tempCAPath),
url.QueryEscape(tempCertPath),
url.QueryEscape(tempKeyPath),
),
}, func() {
tempCACleanup()
tempCertCleanup()
tempKeyCleanup()
}
}
示例2: getLatestConfig
func getLatestConfig(s *server.TestServer, expected int) (cfg *config.SystemConfig, err error) {
err = util.IsTrueWithin(func() bool {
cfg = s.Gossip().GetSystemConfig()
return cfg != nil && len(cfg.Values) == expected
}, 500*time.Millisecond)
return
}
示例3: makeTestDBClient
func makeTestDBClient(t *testing.T, s *server.TestServer) *sql.DB {
db, err := sql.Open("cockroach", fmt.Sprintf("https://%[email protected]%s?certs=test_certs",
security.RootUser,
s.ServingAddr()))
if err != nil {
t.Fatal(err)
}
return db
}
示例4: acquire
func acquire(s server.TestServer, descID sqlbase.ID, version sqlbase.DescriptorVersion) (*csql.LeaseState, error) {
var lease *csql.LeaseState
err := s.DB().Txn(func(txn *client.Txn) error {
var err error
lease, err = s.LeaseManager().(*csql.LeaseManager).Acquire(txn, descID, version)
return err
})
return lease, err
}
示例5: getLatestConfig
func getLatestConfig(s *server.TestServer, expected int) (cfg *config.SystemConfig, err error) {
err = util.IsTrueWithin(func() bool {
var err2 error
cfg, err2 = s.Gossip().GetSystemConfig()
if err2 != nil {
return false
}
return len(cfg.Values) != expected
}, 500*time.Millisecond)
return
}
示例6: setupMultipleRanges
// setupMultipleRanges creates a test server and splits the
// key range at the given keys. Returns the test server and client.
// The caller is responsible for stopping the server and
// closing the client.
func setupMultipleRanges(t *testing.T, ts *server.TestServer, splitAt ...string) *client.DB {
db := createTestClient(t, ts.Stopper(), ts.ServingAddr())
// Split the keyspace at the given keys.
for _, key := range splitAt {
if err := db.AdminSplit(key); err != nil {
// Don't leak server goroutines.
t.Fatal(err)
}
}
return db
}
示例7: waitForConfigChange
func waitForConfigChange(t *testing.T, s *server.TestServer) (*config.SystemConfig, error) {
var foundDesc sql.DatabaseDescriptor
var cfg *config.SystemConfig
return cfg, util.IsTrueWithin(func() bool {
if cfg = s.Gossip().GetSystemConfig(); cfg != nil {
if val := cfg.GetValue(configDescKey); val != nil {
if err := val.GetProto(&foundDesc); err != nil {
t.Fatal(err)
}
return foundDesc.ID == configID
}
}
return false
}, 10*time.Second)
}
示例8: newCLITest
func newCLITest() cliTest {
// Reset the client context for each test. We don't reset the
// pointer (because they are tied into the flags), but instead
// overwrite the existing struct's values.
baseCtx.InitDefaults()
osStderr = os.Stdout
var s server.TestServer
if err := s.Start(); err != nil {
log.Fatalf("Could not start server: %v", err)
}
tempDir, err := ioutil.TempDir("", "cli-test")
if err != nil {
log.Fatal(err)
}
// Copy these assets to disk from embedded strings, so this test can
// run from a standalone binary.
// Disable embedded certs, or the security library will try to load
// our real files as embedded assets.
security.ResetReadFileFn()
assets := []string{
filepath.Join(security.EmbeddedCertsDir, security.EmbeddedCACert),
filepath.Join(security.EmbeddedCertsDir, security.EmbeddedCAKey),
filepath.Join(security.EmbeddedCertsDir, security.EmbeddedNodeCert),
filepath.Join(security.EmbeddedCertsDir, security.EmbeddedNodeKey),
filepath.Join(security.EmbeddedCertsDir, security.EmbeddedRootCert),
filepath.Join(security.EmbeddedCertsDir, security.EmbeddedRootKey),
}
for _, a := range assets {
securitytest.RestrictedCopy(nil, a, tempDir, filepath.Base(a))
}
return cliTest{
TestServer: s,
certsDir: tempDir,
cleanupFunc: func() {
if err := os.RemoveAll(tempDir); err != nil {
log.Fatal(err)
}
},
}
}
示例9: forceNewConfig
// forceNewConfig forces a system config update by writing a bogus descriptor with an
// incremented value inside. It then repeatedly fetches the gossip config until the
// just-written descriptor is found.
func forceNewConfig(t *testing.T, s *server.TestServer) (*config.SystemConfig, error) {
configID++
configDesc := sql.DatabaseDescriptor{
Name: "sentinel",
ID: configID,
Privileges: &sql.PrivilegeDescriptor{},
}
// This needs to be done in a transaction with the system trigger set.
if err := s.DB().Txn(func(txn *client.Txn) error {
txn.SetSystemDBTrigger()
return txn.Put(configDescKey, &configDesc)
}); err != nil {
t.Fatal(err)
}
return waitForConfigChange(t, s)
}
示例10: initReverseScanTestEnv
func initReverseScanTestEnv(s *server.TestServer, t *testing.T) *client.DB {
db := createTestClient(t, s.Stopper(), s.ServingAddr())
// Set up multiple ranges:
// ["", "b"),["b", "e") ,["e", "g") and ["g", "\xff\xff").
for _, key := range []string{"b", "e", "g"} {
// Split the keyspace at the given key.
if pErr := db.AdminSplit(key); pErr != nil {
t.Fatal(pErr)
}
}
// Write keys before, at, and after the split key.
for _, key := range []string{"a", "b", "c", "d", "e", "f", "g", "h"} {
if pErr := db.Put(key, "value"); pErr != nil {
t.Fatal(pErr)
}
}
return db
}
示例11: waitForConfigChange
func waitForConfigChange(t *testing.T, s *server.TestServer) (cfg *config.SystemConfig, err error) {
var foundDesc sql.DatabaseDescriptor
err = util.IsTrueWithin(func() bool {
cfg = s.Gossip().GetSystemConfig()
if cfg == nil {
return false
}
raw, ok := cfg.GetValue(configDescKey)
if !ok {
return false
}
if err2 := proto.Unmarshal(raw, &foundDesc); err2 != nil {
t.Fatalf("could not unmarshal raw value: %s", err2)
return false
}
return foundDesc.ID == configID
}, 10*time.Second)
return
}
示例12: waitForConfigChange
func waitForConfigChange(t *testing.T, s *server.TestServer) config.SystemConfig {
var foundDesc sqlbase.Descriptor
var cfg config.SystemConfig
util.SucceedsSoon(t, func() error {
var ok bool
if cfg, ok = s.Gossip().GetSystemConfig(); ok {
if val := cfg.GetValue(configDescKey); val != nil {
if err := val.GetProto(&foundDesc); err != nil {
t.Fatal(err)
}
if id := foundDesc.GetDatabase().GetID(); id != configID {
return errors.Errorf("expected database id %d; got %d", configID, id)
}
return nil
}
}
return errors.Errorf("got nil system config")
})
return cfg
}
示例13: PGUrl
// PGUrl returns a postgres connection url which connects to this server with the given user, and a
// cleanup function which must be called after all connections created using the connection url have
// been closed.
//
// In order to connect securely using postgres, this method will create temporary on-disk copies of
// certain embedded security certificates. The certificates will be created in a new temporary
// directory. The returned cleanup function will delete this temporary directory.
func PGUrl(t testing.TB, ts *server.TestServer, user, prefix string) (url.URL, func()) {
host, port, err := net.SplitHostPort(ts.PGAddr())
if err != nil {
t.Fatal(err)
}
tempDir, err := ioutil.TempDir("", prefix)
if err != nil {
t.Fatal(err)
}
caPath := security.CACertPath(security.EmbeddedCertsDir)
certPath := security.ClientCertPath(security.EmbeddedCertsDir, user)
keyPath := security.ClientKeyPath(security.EmbeddedCertsDir, user)
// Copy these assets to disk from embedded strings, so this test can
// run from a standalone binary.
tempCAPath := securitytest.RestrictedCopy(t, caPath, tempDir, "ca")
tempCertPath := securitytest.RestrictedCopy(t, certPath, tempDir, "cert")
tempKeyPath := securitytest.RestrictedCopy(t, keyPath, tempDir, "key")
options := url.Values{}
options.Add("sslmode", "verify-full")
options.Add("sslrootcert", tempCAPath)
options.Add("sslcert", tempCertPath)
options.Add("sslkey", tempKeyPath)
return url.URL{
Scheme: "postgres",
User: url.User(user),
Host: net.JoinHostPort(host, port),
RawQuery: options.Encode(),
}, func() {
if err := os.RemoveAll(tempDir); err != nil {
// Not Fatal() because we might already be panicking.
t.Error(err)
}
}
}
示例14: checkPGWireMetrics
// checkPGWireMetrics returns the server's pgwire bytesIn/bytesOut and an error if the
// bytesIn/bytesOut don't satisfy the given minimums and maximums.
func checkPGWireMetrics(s *server.TestServer, minBytesIn, minBytesOut, maxBytesIn, maxBytesOut int64) (int64, int64, error) {
nid := s.Gossip().GetNodeID().String()
if err := s.WriteSummaries(); err != nil {
return -1, -1, err
}
bytesIn := s.MustGetCounter("cr.node.pgwire.bytesin." + nid)
bytesOut := s.MustGetCounter("cr.node.pgwire.bytesout." + nid)
if a, min := bytesIn, minBytesIn; a < min {
return bytesIn, bytesOut, util.Errorf("bytesin %d < expected min %d", a, min)
}
if a, min := bytesOut, minBytesOut; a < min {
return bytesIn, bytesOut, util.Errorf("bytesout %d < expected min %d", a, min)
}
if a, max := bytesIn, maxBytesIn; a > max {
return bytesIn, bytesOut, util.Errorf("bytesin %d > expected max %d", a, max)
}
if a, max := bytesOut, maxBytesOut; a > max {
return bytesIn, bytesOut, util.Errorf("bytesout %d > expected max %d", a, max)
}
return bytesIn, bytesOut, nil
}
示例15: TestDB_Put_insecure
func TestDB_Put_insecure(t *testing.T) {
defer leaktest.AfterTest(t)()
ctx := server.MakeTestContext()
ctx.Insecure = true
s := server.TestServer{
Ctx: &ctx,
}
if err := s.Start(); err != nil {
log.Fatalf("Could not start server: %v", err)
}
defer s.Stop()
db := s.DB()
if err := db.Put("aa", "1"); err != nil {
panic(err)
}
result, err := db.Get("aa")
if err != nil {
panic(err)
}
checkResult(t, []byte("1"), result.ValueBytes())
}