Skip to content

Commit fb3a3b3

Browse files
authored
test: tests for offloading (#77)
1 parent 222dbf3 commit fb3a3b3

File tree

17 files changed

+532
-374
lines changed

17 files changed

+532
-374
lines changed

.github/workflows/cd.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
2+
13
name: CD
24

35
on:

.github/workflows/ci.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
2+
13
name: CI
24

35
on:
@@ -14,6 +16,21 @@ jobs:
1416
test:
1517
runs-on: ubuntu-latest
1618
steps:
19+
# GitHub Actions do not support passing arguments to containers (that are declared in the services section of a job),
20+
# but MinIO depends on it (it needs `server` argument at least).
21+
# When [this](https://github.com/actions/runner/pull/1152) will be merged we can get rid of this step.
22+
- name: Setup MinIO
23+
uses: addnab/docker-run-action@v3
24+
with:
25+
registry: quay.io
26+
image: minio/minio:latest
27+
options: |
28+
--detach
29+
--publish 9000:9000
30+
run: |
31+
minio \
32+
server /data
33+
1734
- name: Checkout code
1835
uses: actions/checkout@v5
1936

Makefile

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,12 @@ run: build-binaries
4141
push-image: build-image
4242
docker push ${IMAGE}:${VERSION}
4343

44+
.PHONY: test-deps
45+
test-deps:
46+
@docker compose -f tests/docker-compose.yml up -d
47+
4448
.PHONY: test
45-
test:
49+
test: test-deps
4650
LOG_LEVEL=ERROR go test ./... -count 1
4751

4852
.bin-deps: export GOBIN := $(LOCAL_BIN)
@@ -75,15 +79,15 @@ proto:
7579

7680
# arg -count=1 is used to disable tests caching (it is necessary when we want reproduce bugs of broken test isolation)
7781
.PHONY: ci-tests
78-
ci-tests:
82+
ci-tests: test-deps
7983
set -o pipefail ;\
8084
go test -v -short -count=1 -coverpkg=github.com/ozontech/seq-db/... -covermode=atomic -coverprofile=cover-tmp.out ./... 2>&1 | \
8185
tee /dev/stderr | go-junit-report -set-exit-code > junit.xml
8286
grep -vE ".pb.go|pb.*.go" cover-tmp.out > cover.out || cp cover-tmp.out cover.out
8387
go tool cover -func=./cover.out
8488

8589
.PHONY: ci-tests-race
86-
ci-tests-race:
90+
ci-tests-race: test-deps
8791
set -o pipefail ;\
8892
go test -short ./... -count=1 -race
8993

frac/remote.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,10 @@ func (f *Remote) Suicide() {
183183
}
184184
}
185185

186+
func (f *Remote) String() string {
187+
return fracToString(f, "remote")
188+
}
189+
186190
func (f *Remote) createDataProvider(ctx context.Context) *sealedDataProvider {
187191
return &sealedDataProvider{
188192
ctx: ctx,

fracmanager/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ type Config struct {
2828
Fraction frac.Config
2929

3030
OffloadingEnabled bool
31+
OffloadingForced bool
3132
OffloadingRetention time.Duration
3233
}
3334

fracmanager/fracmanager.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,6 +666,19 @@ func (fm *FracManager) SealForcedForTests() {
666666
}
667667
}
668668

669+
func (fm *FracManager) OffloadForcedForTests() {
670+
if !(fm.config.OffloadingEnabled && fm.config.OffloadingForced) {
671+
panic("trying to force offloading when it is disabled")
672+
}
673+
674+
// Offloading works only for sealed fractions.
675+
fm.SealForcedForTests()
676+
677+
var wg sync.WaitGroup
678+
fm.cleanupFractions(&wg)
679+
wg.Wait()
680+
}
681+
669682
func (fm *FracManager) ResetCacheForTests() {
670683
fm.cacheMaintainer.Reset()
671684
}

fracmanager/proxy_frac.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package fracmanager
33
import (
44
"context"
55
"errors"
6+
"fmt"
67
"sync"
78
"time"
89

@@ -195,6 +196,10 @@ func (f *proxyFrac) Suicide() {
195196
}
196197
}
197198

199+
func (f *proxyFrac) String() string {
200+
return fmt.Sprintf("%s", f.cur())
201+
}
202+
198203
func (f *proxyFrac) isActiveState() bool {
199204
return f.active != nil && f.sealed == nil && !f.readonly
200205
}

fracmanager/sealed_frac_cache_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -365,9 +365,6 @@ func TestExtraFractionsRemoved(t *testing.T) {
365365
assert.NoError(t, err)
366366

367367
dp := frac.NewDocProvider()
368-
metaRoot := insaneJSON.Spawn()
369-
defer insaneJSON.Release(metaRoot)
370-
371368
infos := map[string]*frac.Info{}
372369

373370
for i := 1; i < times+1; i++ {
@@ -398,6 +395,7 @@ func TestExtraFractionsRemoved(t *testing.T) {
398395

399396
fracsOnDisk := []string{}
400397
fracCacheFromDisk, err := loadFracCache(dataDir)
398+
401399
assert.NoError(t, err)
402400
for k := range fracCacheFromDisk {
403401
fracsOnDisk = append(fracsOnDisk, k)

go.mod

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.24
55
require (
66
contrib.go.opencensus.io/exporter/jaeger v0.2.1
77
github.com/KimMachineGun/automemlimit v0.7.4
8-
github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137
8+
github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b
99
github.com/aws/aws-sdk-go-v2 v1.36.5
1010
github.com/aws/aws-sdk-go-v2/config v1.29.17
1111
github.com/aws/aws-sdk-go-v2/credentials v1.17.70
@@ -60,23 +60,24 @@ require (
6060
github.com/aws/smithy-go v1.22.4 // indirect
6161
github.com/beorn7/perks v1.0.1 // indirect
6262
github.com/cespare/xxhash/v2 v2.3.0 // indirect
63-
github.com/davecgh/go-spew v1.1.1 // indirect
64-
github.com/felixge/fgprof v0.9.3 // indirect
63+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
64+
github.com/felixge/fgprof v0.9.5 // indirect
6565
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
66-
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd // indirect
66+
github.com/google/pprof v0.0.0-20250422154841-e1f9c1950416 // indirect
6767
github.com/mitchellh/mapstructure v1.5.0 // indirect
6868
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
6969
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect
70-
github.com/pelletier/go-toml/v2 v2.1.0 // indirect
71-
github.com/pmezard/go-difflib v1.0.0 // indirect
70+
github.com/pelletier/go-toml/v2 v2.2.3 // indirect
71+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
7272
github.com/prometheus/client_model v0.6.2 // indirect
7373
github.com/prometheus/common v0.65.0 // indirect
7474
github.com/prometheus/procfs v0.16.1 // indirect
75+
github.com/rogpeppe/go-internal v1.13.1 // indirect
7576
github.com/uber/jaeger-client-go v2.25.0+incompatible // indirect
76-
golang.org/x/net v0.40.0 // indirect
77+
golang.org/x/net v0.41.0 // indirect
7778
golang.org/x/sys v0.33.0 // indirect
7879
golang.org/x/text v0.26.0 // indirect
79-
google.golang.org/api v0.95.0 // indirect
80+
google.golang.org/api v0.230.0 // indirect
8081
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect
8182
gopkg.in/yaml.v3 v3.0.1 // indirect
8283
)

0 commit comments

Comments
 (0)