Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
pzhin committed Dec 21, 2016
1 parent c36e471 commit 60744e3
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 22 deletions.
4 changes: 2 additions & 2 deletions cursor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func testCursorMatch(t *testing.T) {
db, err := env.NewDatabase(DBName, schema)
require.Nil(t, err)
require.NotNil(t, db)
require.True(t, env.Open())
require.Nil(t, env.Open())

id := RecordsCount / 2

Expand Down Expand Up @@ -103,7 +103,7 @@ func testCursorRange(t *testing.T) {
db, err := env.NewDatabase(DBName, schema)
require.Nil(t, err)
require.NotNil(t, db)
require.True(t, env.Open())
require.Nil(t, env.Open())

startId := RecordsCount / 4
expectedCount := int(math.Floor(RecordsCount / 1.8))
Expand Down
19 changes: 6 additions & 13 deletions database_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func testNewDatabase(t *testing.T, env *Environment) Database {
db, err := env.NewDatabase(DBName, schema)
require.Nil(t, err)
require.NotNil(t, db)
require.True(t, env.Open())
require.Nil(t, env.Open())
return db
}

Expand Down Expand Up @@ -143,7 +143,7 @@ func TestSetIntKV(t *testing.T) {
db, err := env.NewDatabase(DBName, schema)
require.Nil(t, err)
require.NotNil(t, db)
require.True(t, env.Open())
require.Nil(t, env.Open())

for i := 0; i < RecordsCount; i++ {
doc := db.Document()
Expand Down Expand Up @@ -187,7 +187,7 @@ func TestSetMultiKey(t *testing.T) {
db, err := env.NewDatabase(DBName, schema)
require.Nil(t, err)
require.NotNil(t, db)
require.True(t, env.Open())
require.Nil(t, env.Open())

count := int(math.Pow(RecordsCount, 1/3))

Expand Down Expand Up @@ -245,16 +245,9 @@ func BenchmarkDatabase_Set(b *testing.B) {
schema.AddValue("value", FieldTypeString)

db, err := env.NewDatabase(DBName, schema)
if !assert.Nil(b, err) {
b.Fatalf("failed create Database: err=%v", err)
}
if !assert.NotNil(b, db) {
b.Fatal("failed create Database")
}

if !env.Open() {
b.Fatal("failed open environment")
}
require.Nil(b, err)
require.NotNil(b, db)
require.Nil(b, env.Open())

b.ResetTimer()
for i := 0; i < b.N; i++ {
Expand Down
11 changes: 7 additions & 4 deletions environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func NewEnvironment() (*Environment, error) {

func (env *Environment) NewDatabase(name string, schema *Schema) (Database, error) {
if !env.SetString("db", name) {
return nil, errors.New("failed create database")
return nil, fmt.Errorf("failed create database: %v", env.Error())
}
i := 0
for n, typ := range schema.keys {
Expand All @@ -38,7 +38,7 @@ func (env *Environment) NewDatabase(name string, schema *Schema) (Database, erro
}
db := env.GetObject(fmt.Sprintf("db.%s", name))
if db == nil {
return nil, errors.New("failed get database")
return nil, fmt.Errorf("failed get database: %v", env.Error())
}
return &database{
dataStore: &dataStore{
Expand All @@ -59,8 +59,11 @@ func (env *Environment) Close() error {

// Open opens environment
// At a minimum path must be specified and one db declared
func (env *Environment) Open() bool {
return spOpen(env.ptr)
func (env *Environment) Open() error {
if !spOpen(env.ptr) {
return env.Error()
}
return nil
}

func (env *Environment) Error() error {
Expand Down
11 changes: 8 additions & 3 deletions wrappers.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,15 @@ func free(ptr unsafe.Pointer) {
}

func goString(ptr unsafe.Pointer) string {
cStr := C.pointer_to_string(ptr)
return C.GoString(cStr)
return C.GoString((*C.char)(ptr))
}

func cString(str string) *C.char {
return C.CString(str)
l := len(str)
cp := C.malloc(C.size_t(l + 1))
for i := 0; i < l; i++ {
*(*byte)(unsafe.Pointer(uintptr(cp) + uintptr(i))) = str[i]
}
*(*byte)(unsafe.Pointer(uintptr(cp) + uintptr(l))) = 0x0
return (*C.char)(cp)
}

0 comments on commit 60744e3

Please sign in to comment.