(t *testing.T)
| 18 | ) |
| 19 | |
| 20 | func TestTimeFuncWiring(t *testing.T) { |
| 21 | ctx, env := NewEnvironment(t, FormatNotImportant) |
| 22 | |
| 23 | ft := faketime.NewTimeAdvance(time.Date(2018, time.February, 6, 0, 0, 0, 0, time.UTC)) |
| 24 | |
| 25 | // Re open with injected time |
| 26 | rep, err := repo.Open(ctx, env.RepositoryWriter.ConfigFilename(), env.Password, &repo.Options{TimeNowFunc: ft.NowFunc()}) |
| 27 | require.NoError(t, err, "failed to open test repository") |
| 28 | |
| 29 | r0 := testutil.EnsureType[repo.DirectRepository](t, rep) |
| 30 | |
| 31 | _, env.RepositoryWriter, err = r0.NewDirectWriter(ctx, repo.WriteSessionOptions{Purpose: "test"}) |
| 32 | require.NoError(t, err) |
| 33 | |
| 34 | // verify wiring for the repo layer |
| 35 | got, want := env.RepositoryWriter.Time(), ft.NowFunc()() |
| 36 | require.WithinDuration(t, want, got, 0, "times do not match") |
| 37 | |
| 38 | want, got = ft.Advance(10*time.Minute), env.RepositoryWriter.Time() |
| 39 | require.WithinDuration(t, want, got, 0, "times do not match") |
| 40 | |
| 41 | // verify wiring for the content layer |
| 42 | nt := ft.Advance(20 * time.Second) |
| 43 | |
| 44 | cid, err := env.RepositoryWriter.ContentManager().WriteContent(ctx, gather.FromSlice([]byte("foo")), "", content.NoCompression) |
| 45 | require.NoError(t, err, "failed to write content") |
| 46 | |
| 47 | info, err := env.RepositoryWriter.ContentInfo(ctx, cid) |
| 48 | |
| 49 | require.NoErrorf(t, err, "failed to get content info for %s", cid) |
| 50 | require.WithinDuration(t, nt, info.Timestamp(), 0, "content time does not match") |
| 51 | |
| 52 | // verify wiring for the manifest layer |
| 53 | nt = ft.Advance(3 * time.Minute) |
| 54 | |
| 55 | labels := map[string]string{"l1": "v1", "l2": "v2", "type": "my-manifest"} |
| 56 | |
| 57 | mid, err := env.RepositoryWriter.PutManifest(ctx, labels, "manifest content") |
| 58 | require.NoError(t, err, "failed to put manifest") |
| 59 | |
| 60 | meta, err := env.RepositoryWriter.GetManifest(ctx, mid, nil) |
| 61 | |
| 62 | require.NoError(t, err, "failed to get manifest metadata") |
| 63 | require.WithinDuration(t, nt, meta.ModTime, 0, "manifest modification time does not match") |
| 64 | |
| 65 | const defaultPermissions = 0o777 |
| 66 | |
| 67 | // verify wiring for the snapshot layer |
| 68 | sourceDir := mockfs.NewDirectory() |
| 69 | sourceDir.AddFile("f1", []byte{1, 2, 3}, defaultPermissions) |
| 70 | |
| 71 | nt = ft.Advance(1 * time.Hour) |
| 72 | u := upload.NewUploader(env.RepositoryWriter) |
| 73 | policyTree := policy.BuildTree(nil, policy.DefaultPolicy) |
| 74 | |
| 75 | s1, err := u.Upload(ctx, sourceDir, policyTree, snapshot.SourceInfo{}) |
| 76 | |
| 77 | require.NoError(t, err, "failed to create snapshot") |
nothing calls this directly
no test coverage detected