mirror of
				https://github.com/taigrr/bitcask
				synced 2025-01-18 04:03:17 -08:00 
			
		
		
		
	Export method reopen (#113)
This commit is contained in:
		
							parent
							
								
									803b08949e
								
							
						
					
					
						commit
						4dfe42cb3b
					
				| @ -280,7 +280,7 @@ func (b *Bitcask) put(key, value []byte) (int64, int64, error) { | ||||
| 	return b.curr.Write(e) | ||||
| } | ||||
| 
 | ||||
| func (b *Bitcask) reopen() error { | ||||
| func (b *Bitcask) Reopen() error { | ||||
| 	b.mu.Lock() | ||||
| 	defer b.mu.Unlock() | ||||
| 
 | ||||
| @ -383,7 +383,7 @@ func (b *Bitcask) Merge() error { | ||||
| 	} | ||||
| 
 | ||||
| 	// And finally reopen the database | ||||
| 	return b.reopen() | ||||
| 	return b.Reopen() | ||||
| } | ||||
| 
 | ||||
| // Open opens the database at the given path with optional options. | ||||
| @ -436,7 +436,7 @@ func Open(path string, options ...Option) (*Bitcask, error) { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
| 	if err := bitcask.reopen(); err != nil { | ||||
| 	if err := bitcask.Reopen(); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 
 | ||||
|  | ||||
| @ -133,6 +133,63 @@ func TestAll(t *testing.T) { | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func TestReopen(t *testing.T) { | ||||
| 	assert := assert.New(t) | ||||
| 
 | ||||
| 	testdir, err := ioutil.TempDir("", "bitcask") | ||||
| 	assert.NoError(err) | ||||
| 
 | ||||
| 	t.Run("Reopen", func(t *testing.T) { | ||||
| 		var ( | ||||
| 			db  *Bitcask | ||||
| 			err error | ||||
| 		) | ||||
| 
 | ||||
| 		t.Run("Open", func(t *testing.T) { | ||||
| 			db, err = Open(testdir) | ||||
| 			assert.NoError(err) | ||||
| 		}) | ||||
| 
 | ||||
| 		t.Run("Put", func(t *testing.T) { | ||||
| 			err = db.Put([]byte("foo"), []byte("bar")) | ||||
| 			assert.NoError(err) | ||||
| 		}) | ||||
| 
 | ||||
| 		t.Run("Get", func(t *testing.T) { | ||||
| 			val, err := db.Get([]byte("foo")) | ||||
| 			assert.NoError(err) | ||||
| 			assert.Equal([]byte("bar"), val) | ||||
| 		}) | ||||
| 
 | ||||
| 		t.Run("Reopen", func(t *testing.T) { | ||||
| 			err = db.Reopen() | ||||
| 			assert.NoError(err) | ||||
| 		}) | ||||
| 
 | ||||
| 		t.Run("GetAfterReopen", func(t *testing.T) { | ||||
| 			val, err := db.Get([]byte("foo")) | ||||
| 			assert.NoError(err) | ||||
| 			assert.Equal([]byte("bar"), val) | ||||
| 		}) | ||||
| 
 | ||||
| 		t.Run("PutAfterReopen", func(t *testing.T) { | ||||
| 			err = db.Put([]byte("zzz"), []byte("foo")) | ||||
| 			assert.NoError(err) | ||||
| 		}) | ||||
| 
 | ||||
| 		t.Run("GetAfterReopenAndPut", func(t *testing.T) { | ||||
| 			val, err := db.Get([]byte("zzz")) | ||||
| 			assert.NoError(err) | ||||
| 			assert.Equal([]byte("foo"), val) | ||||
| 		}) | ||||
| 
 | ||||
| 		t.Run("Close", func(t *testing.T) { | ||||
| 			err = db.Close() | ||||
| 			assert.NoError(err) | ||||
| 		}) | ||||
| 	}) | ||||
| } | ||||
| 
 | ||||
| func TestDeletedKeys(t *testing.T) { | ||||
| 	assert := assert.New(t) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user