Exemplo n.º 1
0
func TestKvfileKV(t *testing.T) {
	tmpDir, err := ioutil.TempDir("", "camlistore-kvfilekv_test")
	if err != nil {
		t.Fatal(err)
	}
	defer os.RemoveAll(tmpDir)
	dbname := filepath.Join(tmpDir, "testdb.kvfile")
	kv, err := sorted.NewKeyValue(jsonconfig.Obj{
		"type": "kv",
		"file": dbname,
	})
	if err != nil {
		t.Fatalf("Could not create kvfile sorted kv at %v: %v", dbname, err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 2
0
// TestMongoKV tests against a real MongoDB instance, using a Docker container.
func TestMongoKV(t *testing.T) {
	// SetupMongoContainer may skip or fatal the test if docker isn't found or something goes wrong when setting up the container.
	// Thus, no error is returned
	containerID, ip := dockertest.SetupMongoContainer(t)
	defer containerID.KillRemove(t)

	kv, err := sorted.NewKeyValue(jsonconfig.Obj{
		"type":     "mongo",
		"host":     ip,
		"database": "camlitest",
	})
	if err != nil {
		t.Fatalf("mongo.NewKeyValue = %v", err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 3
0
func TestLeveldbKV(t *testing.T) {
	tmpDir, err := ioutil.TempDir("", "camlistore-leveldbkv_test")
	if err != nil {
		t.Fatal(err)
	}
	defer os.RemoveAll(tmpDir)
	dbname := filepath.Join(tmpDir, "testdb.leveldb")
	t.Logf("Testing leveldb %q.", dbname)
	kv, err := sorted.NewKeyValue(jsonconfig.Obj{
		"type": "leveldb",
		"file": dbname,
	})
	if err != nil {
		t.Fatalf("Could not create leveldb sorted kv at %v: %v", dbname, err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 4
0
// TestMySQLKV tests against a real MySQL instance, using a Docker container.
func TestMySQLKV(t *testing.T) {
	dbname := "camlitest_" + osutil.Username()
	containerID, ip := dockertest.SetupMySQLContainer(t, dbname)
	defer containerID.KillRemove(t)

	kv, err := sorted.NewKeyValue(jsonconfig.Obj{
		"type":     "mysql",
		"host":     ip + ":3306",
		"database": dbname,
		"user":     dockertest.MySQLUsername,
		"password": dockertest.MySQLPassword,
	})
	if err != nil {
		t.Fatalf("mysql.NewKeyValue = %v", err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 5
0
// TestPostgreSQLKV tests against a real PostgreSQL instance, using a Docker container.
func TestPostgreSQLKV(t *testing.T) {
	dbname := "camlitest_" + osutil.Username()
	containerID, ip := dockertest.SetupPostgreSQLContainer(t, dbname)
	defer containerID.KillRemove(t)

	kv, err := sorted.NewKeyValue(jsonconfig.Obj{
		"type":     "postgres",
		"host":     ip,
		"database": dbname,
		"user":     dockertest.PostgresUsername,
		"password": dockertest.PostgresPassword,
		"sslmode":  "disable",
	})
	if err != nil {
		t.Fatalf("postgres.NewKeyValue = %v", err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 6
0
func TestSQLiteKV(t *testing.T) {
	if !CompiledIn() {
		t.Skip(ErrNotCompiled.Error())
	}
	tmpDir, err := ioutil.TempDir("", "camlistore-sqlitekv_test")
	if err != nil {
		t.Fatal(err)
	}
	defer os.RemoveAll(tmpDir)
	dbname := filepath.Join(tmpDir, "testdb.sqlite")
	kv, err := sorted.NewKeyValue(jsonconfig.Obj{
		"type": "sqlite",
		"file": dbname,
	})
	if err != nil {
		t.Fatalf("Could not create sqlite sorted kv at %v: %v", dbname, err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 7
0
// TestMySQLKV tests against a real MySQL instance, using a Docker container.
func TestMySQLKV(t *testing.T) {
	dbname := "camlitest_" + osutil.Username()
	containerID, ip := dockertest.SetupMySQLContainer(t, dbname)
	defer containerID.KillRemove(t)

	// TODO(mpl): add test for serverVersion once we host the docker image ourselves
	// (and hence have the control over the version).

	kv, err := sorted.NewKeyValue(jsonconfig.Obj{
		"type":     "mysql",
		"host":     ip + ":3306",
		"database": dbname,
		"user":     dockertest.MySQLUsername,
		"password": dockertest.MySQLPassword,
	})
	if err != nil {
		t.Fatalf("mysql.NewKeyValue = %v", err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 8
0
// TestMongoKV tests against a real MongoDB instance, using a Docker container.
// Currently using https://index.docker.io/u/robinvdvleuten/mongo/
func TestMongoKV(t *testing.T) {
	if testing.Short() {
		t.Skip("skipping in short mode")
	}
	if _, err := exec.LookPath("docker"); err != nil {
		t.Skip("skipping without docker available in path")
	}
	if ok, err := dockerHaveImage(mongoImage); !ok || err != nil {
		if err != nil {
			t.Skipf("Error running docker to check for %s: %v", mongoImage, err)
		}
		log.Printf("Pulling docker image %s ...", mongoImage)
		if err := dockerPull(mongoImage); err != nil {
			t.Skipf("Error pulling %s: %v", mongoImage, err)
		}
	}
	containerID, err := dockerRun("-d", mongoImage, "--smallfiles")
	if err != nil {
		t.Fatalf("docker run: %v", err)
	}
	defer dockerKillContainer(containerID)

	ip, err := dockerIP(containerID)
	if err != nil {
		t.Fatalf("Error getting container IP: %v", err)
	}

	if err := netutil.AwaitReachable(ip+":27017", 10*time.Second); err != nil {
		t.Fatal("timeout waiting for port to become reachable")
	}

	kv, err := NewKeyValue(Config{
		Server:   ip,
		Database: "camlitest",
	})
	if err != nil {
		t.Fatalf("monogo.NewKeyValue = %v", err)
	}
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 9
0
func TestSortedKV(t *testing.T) {
	kv, clean := newSorted(t)
	defer clean()
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 10
0
func TestSorted_MySQL(t *testing.T) {
	kv, clean := newMySQLSorted(t)
	defer clean()
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 11
0
func TestSorted_Kvfile(t *testing.T) {
	kv, cleanup := newKvfileSorted(t)
	defer cleanup()
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 12
0
func TestSorted_Postgres(t *testing.T) {
	kv, clean := newPostgresSorted(t)
	defer clean()
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 13
0
func TestMemoryKV(t *testing.T) {
	kv := sorted.NewMemoryKeyValue()
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 14
0
func TestSorted_Mongo(t *testing.T) {
	kv, cleanup := newMongoSorted(t)
	defer cleanup()
	kvtest.TestSorted(t, kv)
}
Exemplo n.º 15
0
func TestSorted_LevelDB(t *testing.T) {
	kv, cleanup := newLevelDBSorted(t)
	defer cleanup()
	kvtest.TestSorted(t, kv)
}