// 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 serverutils.TestServerInterface, 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(context.TODO(), key); err != nil { // Don't leak server goroutines. t.Fatal(err) } } return db }
func createTestClientForUser( t *testing.T, s serverutils.TestServerInterface, user string, ) *client.DB { var ctx base.Config ctx.InitDefaults() ctx.User = user ctx.SSLCA = filepath.Join(security.EmbeddedCertsDir, security.EmbeddedCACert) ctx.SSLCert = filepath.Join(security.EmbeddedCertsDir, fmt.Sprintf("%s.crt", user)) ctx.SSLCertKey = filepath.Join(security.EmbeddedCertsDir, fmt.Sprintf("%s.key", user)) conn, err := rpc.NewContext(log.AmbientContext{}, &ctx, s.Clock(), s.Stopper()).GRPCDial(s.ServingAddr()) if err != nil { t.Fatal(err) } return client.NewDB(client.NewSender(conn)) }
func createTestClientForUser( t *testing.T, s serverutils.TestServerInterface, user string, dbCtx client.DBContext, ) *client.DB { rpcContext := rpc.NewContext(log.AmbientContext{}, &base.Config{ User: user, SSLCA: filepath.Join(security.EmbeddedCertsDir, security.EmbeddedCACert), SSLCert: filepath.Join(security.EmbeddedCertsDir, fmt.Sprintf("%s.crt", user)), SSLCertKey: filepath.Join(security.EmbeddedCertsDir, fmt.Sprintf("%s.key", user)), }, s.Clock(), s.Stopper()) conn, err := rpcContext.GRPCDial(s.ServingAddr()) if err != nil { t.Fatal(err) } return client.NewDBWithContext(client.NewSender(conn), dbCtx) }
func initReverseScanTestEnv(s serverutils.TestServerInterface, 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 err := db.AdminSplit(context.TODO(), key); err != nil { t.Fatal(err) } } // Write keys before, at, and after the split key. for _, key := range []string{"a", "b", "c", "d", "e", "f", "g", "h"} { if err := db.Put(context.TODO(), key, "value"); err != nil { t.Fatal(err) } } return db }