MCPcopy
hub / github.com/etcd-io/etcd / TestDefragNoSpace

Function TestDefragNoSpace

tests/e2e/defrag_no_space_test.go:29–71  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

27)
28
29func TestDefragNoSpace(t *testing.T) {
30 tests := []struct {
31 name string
32 failpoint string
33 err string
34 }{
35 {
36 name: "no space (#18810) - can't open/create new bbolt db",
37 failpoint: "defragOpenFileError",
38 err: "no space",
39 },
40 {
41 name: "defragdb failure",
42 failpoint: "defragdbFail",
43 err: "some random error",
44 },
45 }
46
47 for _, tc := range tests {
48 t.Run(tc.name, func(t *testing.T) {
49 e2e.BeforeTest(t)
50
51 clus, err := e2e.NewEtcdProcessCluster(context.TODO(), t,
52 e2e.WithClusterSize(1),
53 e2e.WithGoFailEnabled(true),
54 )
55 require.NoError(t, err)
56 t.Cleanup(func() { clus.Stop() })
57
58 member := clus.Procs[0]
59
60 require.NoError(t, member.Failpoints().SetupHTTP(context.Background(), tc.failpoint, fmt.Sprintf(`return("%s")`, tc.err)))
61 require.ErrorContains(t, member.Etcdctl().Defragment(context.Background(), config.DefragOption{Timeout: time.Minute}), tc.err)
62
63 // Make sure etcd continues to run even after the failed defrag attempt
64 require.NoError(t, member.Etcdctl().Put(context.Background(), "foo", "bar", config.PutOptions{}))
65 value, err := member.Etcdctl().Get(context.Background(), "foo", config.GetOptions{})
66 require.NoError(t, err)
67 require.Len(t, value.Kvs, 1)
68 require.Equal(t, "bar", string(value.Kvs[0].Value))
69 })
70 }
71}

Callers

nothing calls this directly

Calls 12

StopMethod · 0.95
SetupHTTPMethod · 0.80
RunMethod · 0.65
BeforeTestMethod · 0.65
CleanupMethod · 0.65
FailpointsMethod · 0.65
DefragmentMethod · 0.65
EtcdctlMethod · 0.65
PutMethod · 0.65
GetMethod · 0.65
LenMethod · 0.65
EqualMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…