github.com/observiq/carbon@v0.9.11-0.20200820160507-1b872e368a5e/commands/offsets_test.go (about) 1 package commands 2 3 import ( 4 "bytes" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 "testing" 9 10 agent "github.com/observiq/carbon/agent" 11 "github.com/observiq/carbon/operator/helper" 12 "github.com/stretchr/testify/require" 13 "go.etcd.io/bbolt" 14 ) 15 16 func TestOffsets(t *testing.T) { 17 tempDir, err := ioutil.TempDir("", "") 18 require.NoError(t, err) 19 defer os.RemoveAll(tempDir) 20 21 databasePath := filepath.Join(tempDir, "logagent.db") 22 configPath := filepath.Join(tempDir, "config.yaml") 23 ioutil.WriteFile(configPath, []byte{}, 0666) 24 25 // capture stdout 26 buf := bytes.NewBuffer([]byte{}) 27 stdout = buf 28 29 // add an offset to the database 30 db, err := agent.OpenDatabase(databasePath) 31 require.NoError(t, err) 32 db.Update(func(tx *bbolt.Tx) error { 33 bucket, err := tx.CreateBucketIfNotExists(helper.OffsetsBucket) 34 require.NoError(t, err) 35 36 _, err = bucket.CreateBucket([]byte("$.testoperatorid1")) 37 require.NoError(t, err) 38 _, err = bucket.CreateBucket([]byte("$.testoperatorid2")) 39 require.NoError(t, err) 40 return nil 41 }) 42 db.Close() 43 44 // check that offsets list actually lists the operator 45 offsetsList := NewRootCmd() 46 offsetsList.SetArgs([]string{ 47 "offsets", "list", 48 "--database", databasePath, 49 "--config", configPath, 50 }) 51 52 err = offsetsList.Execute() 53 require.NoError(t, err) 54 require.Equal(t, "$.testoperatorid1\n$.testoperatorid2\n", buf.String()) 55 56 // clear the offsets 57 offsetsClear := NewRootCmd() 58 offsetsClear.SetArgs([]string{ 59 "offsets", "clear", 60 "--database", databasePath, 61 "--config", configPath, 62 "$.testoperatorid2", 63 }) 64 65 err = offsetsClear.Execute() 66 require.NoError(t, err) 67 68 // Check that offsets list only shows uncleared operator id 69 buf.Reset() 70 err = offsetsList.Execute() 71 require.NoError(t, err) 72 require.Equal(t, "$.testoperatorid1\n", buf.String()) 73 74 }