1package local
2
3import (
4	"io"
5	"io/ioutil"
6	"os"
7	"time"
8
9	"github.com/prometheus/common/model"
10
11	"github.com/cortexproject/cortex/pkg/chunk"
12	"github.com/cortexproject/cortex/pkg/chunk/objectclient"
13	"github.com/cortexproject/cortex/pkg/chunk/testutils"
14)
15
16type fixture struct {
17	name    string
18	dirname string
19}
20
21func (f *fixture) Name() string {
22	return f.name
23}
24
25func (f *fixture) Clients() (
26	indexClient chunk.IndexClient, chunkClient chunk.Client, tableClient chunk.TableClient,
27	schemaConfig chunk.SchemaConfig, closer io.Closer, err error,
28) {
29	f.dirname, err = ioutil.TempDir(os.TempDir(), "boltdb")
30	if err != nil {
31		return
32	}
33
34	indexClient, err = NewBoltDBIndexClient(BoltDBConfig{
35		Directory: f.dirname,
36	})
37	if err != nil {
38		return
39	}
40
41	oClient, err := NewFSObjectClient(FSConfig{Directory: f.dirname})
42	if err != nil {
43		return
44	}
45
46	chunkClient = objectclient.NewClient(oClient, objectclient.Base64Encoder)
47
48	tableClient, err = NewTableClient(f.dirname)
49	if err != nil {
50		return
51	}
52
53	schemaConfig = chunk.SchemaConfig{
54		Configs: []chunk.PeriodConfig{{
55			IndexType: "boltdb",
56			From:      chunk.DayTime{Time: model.Now()},
57			ChunkTables: chunk.PeriodicTableConfig{
58				Prefix: "chunks",
59				Period: 10 * time.Minute,
60			},
61			IndexTables: chunk.PeriodicTableConfig{
62				Prefix: "index",
63				Period: 10 * time.Minute,
64			},
65		}},
66	}
67
68	closer = testutils.CloserFunc(func() error {
69		return os.RemoveAll(f.dirname)
70	})
71
72	return
73}
74
75// Fixtures for unit testing GCP storage.
76var Fixtures = []testutils.Fixture{
77	&fixture{
78		name: "boltdb",
79	},
80}
81