diff --git a/CHANGES.txt b/CHANGES.txt index 18cd3a2..2cd70dc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,6 @@ +6.8.1 (Nov 10, 2025) +- Fixed to use an old proxy with 1.3 spec. + 6.8.0 (Sep 26, 2025) - Added support for rule-based segments. These segments determine membership at runtime by evaluating their configured rules against the user attributes provided to the SDK. - Added support for feature flag prerequisites. This allows customers to define dependency conditions between flags, which are evaluated before any allowlists or targeting rules. diff --git a/go.mod b/go.mod index 6849a7d..ed99dd0 100644 --- a/go.mod +++ b/go.mod @@ -3,8 +3,8 @@ module github.com/splitio/go-client/v6 go 1.18 require ( - github.com/splitio/go-split-commons/v7 v7.0.1-0.20250930213118-b0b22c397fc4 - github.com/splitio/go-toolkit/v5 v5.4.1-0.20250930172659-38274b802d99 + github.com/splitio/go-split-commons/v8 v8.0.0 + github.com/splitio/go-toolkit/v5 v5.4.1 github.com/stretchr/testify v1.11.1 ) diff --git a/go.sum b/go.sum index 4c948cc..90a9d9a 100644 --- a/go.sum +++ b/go.sum @@ -18,10 +18,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/redis/go-redis/v9 v9.0.4 h1:FC82T+CHJ/Q/PdyLW++GeCO+Ol59Y4T7R4jbgjvktgc= github.com/redis/go-redis/v9 v9.0.4/go.mod h1:WqMKv5vnQbRuZstUwxQI195wHy+t4PuXDOjzMvcuQHk= -github.com/splitio/go-split-commons/v7 v7.0.1-0.20250930213118-b0b22c397fc4 h1:OK9LLRmEpLghXM5paCrR9zFXTuYTdoiP2P2apwW3C9E= -github.com/splitio/go-split-commons/v7 v7.0.1-0.20250930213118-b0b22c397fc4/go.mod h1:Lsj2n1zm88laFRu+JhlNeXW0x1ndtjQ1H21rLhRFfOs= -github.com/splitio/go-toolkit/v5 v5.4.1-0.20250930172659-38274b802d99 h1:rQo355F9JbdyTMz2X5MU+FeRvkT6rvD1n+GnXdJr33A= -github.com/splitio/go-toolkit/v5 v5.4.1-0.20250930172659-38274b802d99/go.mod h1:SifzysrOVDbzMcOE8zjX02+FG5az4FrR3Us/i5SeStw= +github.com/splitio/go-split-commons/v8 v8.0.0 h1:wLk5eT6WU2LfxtaWG3ZHlTbNMGWP2eYsZTb1o+tFpkI= +github.com/splitio/go-split-commons/v8 v8.0.0/go.mod h1:vgRGPn0s4RC9/zp1nIn4KeeIEj/K3iXE2fxYQbCk/WI= +github.com/splitio/go-toolkit/v5 v5.4.1 h1:srTyvDBJZMUcJ/KiiQDMyjCuELVgTBh2TGRVn0sOXEE= +github.com/splitio/go-toolkit/v5 v5.4.1/go.mod h1:SifzysrOVDbzMcOE8zjX02+FG5az4FrR3Us/i5SeStw= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= diff --git a/splitio/client/client.go b/splitio/client/client.go index 3ca9b16..ba40818 100644 --- a/splitio/client/client.go +++ b/splitio/client/client.go @@ -11,13 +11,13 @@ import ( "github.com/splitio/go-client/v6/splitio/conf" impressionlistener "github.com/splitio/go-client/v6/splitio/impressionListener" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/engine/evaluator" - "github.com/splitio/go-split-commons/v7/engine/evaluator/impressionlabels" - "github.com/splitio/go-split-commons/v7/flagsets" - "github.com/splitio/go-split-commons/v7/provisional" - "github.com/splitio/go-split-commons/v7/storage" - "github.com/splitio/go-split-commons/v7/telemetry" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/engine/evaluator" + "github.com/splitio/go-split-commons/v8/engine/evaluator/impressionlabels" + "github.com/splitio/go-split-commons/v8/flagsets" + "github.com/splitio/go-split-commons/v8/provisional" + "github.com/splitio/go-split-commons/v8/storage" + "github.com/splitio/go-split-commons/v8/telemetry" "github.com/splitio/go-toolkit/v5/logging" ) diff --git a/splitio/client/client_test.go b/splitio/client/client_test.go index b695aae..04e0f7c 100644 --- a/splitio/client/client_test.go +++ b/splitio/client/client_test.go @@ -17,25 +17,26 @@ import ( "github.com/splitio/go-client/v6/splitio" "github.com/splitio/go-client/v6/splitio/conf" impressionlistener "github.com/splitio/go-client/v6/splitio/impressionListener" - - commonsCfg "github.com/splitio/go-split-commons/v7/conf" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/engine/evaluator" - "github.com/splitio/go-split-commons/v7/engine/evaluator/impressionlabels" - evaluatorMock "github.com/splitio/go-split-commons/v7/engine/evaluator/mocks" - "github.com/splitio/go-split-commons/v7/healthcheck/application" - "github.com/splitio/go-split-commons/v7/provisional" - "github.com/splitio/go-split-commons/v7/provisional/strategy" - authMocks "github.com/splitio/go-split-commons/v7/service/mocks" - "github.com/splitio/go-split-commons/v7/storage" - "github.com/splitio/go-split-commons/v7/storage/inmemory" - "github.com/splitio/go-split-commons/v7/storage/inmemory/mutexqueue" - "github.com/splitio/go-split-commons/v7/storage/mocks" - "github.com/splitio/go-split-commons/v7/storage/redis" - "github.com/splitio/go-split-commons/v7/synchronizer" - syncMock "github.com/splitio/go-split-commons/v7/synchronizer/mocks" - "github.com/splitio/go-split-commons/v7/telemetry" - "github.com/splitio/go-split-commons/v7/util" + "github.com/stretchr/testify/assert" + + commonsCfg "github.com/splitio/go-split-commons/v8/conf" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/engine/evaluator" + "github.com/splitio/go-split-commons/v8/engine/evaluator/impressionlabels" + evaluatorMock "github.com/splitio/go-split-commons/v8/engine/evaluator/mocks" + "github.com/splitio/go-split-commons/v8/healthcheck/application" + "github.com/splitio/go-split-commons/v8/provisional" + "github.com/splitio/go-split-commons/v8/provisional/strategy" + authMocks "github.com/splitio/go-split-commons/v8/service/mocks" + "github.com/splitio/go-split-commons/v8/storage" + "github.com/splitio/go-split-commons/v8/storage/inmemory" + "github.com/splitio/go-split-commons/v8/storage/inmemory/mutexqueue" + "github.com/splitio/go-split-commons/v8/storage/mocks" + "github.com/splitio/go-split-commons/v8/storage/redis" + "github.com/splitio/go-split-commons/v8/synchronizer" + syncMock "github.com/splitio/go-split-commons/v8/synchronizer/mocks" + "github.com/splitio/go-split-commons/v8/telemetry" + "github.com/splitio/go-split-commons/v8/util" "github.com/splitio/go-toolkit/v5/datastructures/set" "github.com/splitio/go-toolkit/v5/logging" @@ -1005,26 +1006,30 @@ func TestBlockUntilReadyInMemoryOk(t *testing.T) { mockedSplit3 := dtos.SplitDTO{Name: "split3", Killed: true, Status: "INACTIVE"} sdkServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - time.Sleep(3 * time.Second) - if r.URL.Path != "/splitChanges" || r.Method != "GET" { - t.Error("Invalid request. Should be GET to /splitChanges") - } + switch r.URL.Path { + case "/version": + w.WriteHeader(http.StatusOK) + case "/splitChanges": + time.Sleep(3 * time.Second) + splitChanges := dtos.RuleChangesDTO{ + FeatureFlags: dtos.FeatureFlagsDTO{ + Splits: []dtos.SplitDTO{mockedSplit1, mockedSplit2, mockedSplit3}, + Since: 3, + Till: 3, + }, + } - splitChanges := dtos.SplitChangesDTO{ - FeatureFlags: dtos.FeatureFlagsDTO{ - Splits: []dtos.SplitDTO{mockedSplit1, mockedSplit2, mockedSplit3}, - Since: 3, - Till: 3, - }, - } + raw, err := json.Marshal(splitChanges) + if err != nil { + t.Error("Error building json") + return + } - raw, err := json.Marshal(splitChanges) - if err != nil { - t.Error("Error building json") - return + w.Write(raw) + default: + t.Error("Unexpected path") } - w.Write(raw) })) defer sdkServer.Close() @@ -1150,7 +1155,7 @@ func TestBlockUntilReadyInMemoryOk(t *testing.T) { err = client.BlockUntilReady(2) if err != nil { - t.Error("Wrong message error") + t.Error("Wrong message error", err.Error()) } if !client.factory.IsReady() || !manager.factory.IsReady() { @@ -2443,7 +2448,7 @@ func TestTelemetryMemory(t *testing.T) { sdkServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { time.Sleep(100 * time.Millisecond) - splitChanges := dtos.SplitChangesDTO{ + splitChanges := dtos.RuleChangesDTO{ FeatureFlags: dtos.FeatureFlagsDTO{ Splits: []dtos.SplitDTO{ {Name: "split1", Killed: true, Status: "ACTIVE", DefaultTreatment: "on"}, @@ -3111,6 +3116,115 @@ func TestUnsupportedandSemverMatcherRedis(t *testing.T) { } } +var splitRuleBased = &dtos.SplitDTO{ + Algo: 2, + ChangeNumber: 1494593336752, + DefaultTreatment: "off", + Killed: false, + Name: "rbsplit", + Seed: -1992295819, + Status: "ACTIVE", + TrafficAllocation: 100, + TrafficAllocationSeed: -285565213, + TrafficTypeName: "user", + Configurations: map[string]string{"on": "{\"color\": \"blue\",\"size\": 13}"}, + Conditions: []dtos.ConditionDTO{ + { + ConditionType: "ROLLOUT", + Label: "default rule", + MatcherGroup: dtos.MatcherGroupDTO{ + Combiner: "AND", + Matchers: []dtos.MatcherDTO{ + { + KeySelector: &dtos.KeySelectorDTO{ + TrafficType: "user", + }, + MatcherType: "IN_RULE_BASED_SEGMENT", + UserDefinedSegment: &dtos.UserDefinedSegmentMatcherDataDTO{ + SegmentName: "rbsegment1", + }, + Negate: false, + }, + }, + }, + Partitions: []dtos.PartitionDTO{ + { + Size: 100, + Treatment: "on", + }, + { + Size: 0, + Treatment: "off", + }, + }, + }, + }, +} + +var rbsegment1 = &dtos.RuleBasedSegmentDTO{ + Name: "rbsegment1", + Conditions: []dtos.RuleBasedConditionDTO{ + { + MatcherGroup: dtos.MatcherGroupDTO{ + Combiner: "AND", + Matchers: []dtos.MatcherDTO{ + { + KeySelector: &dtos.KeySelectorDTO{ + TrafficType: "user", + Attribute: &attribute, + }, + MatcherType: "EQUAL_TO_SEMVER", + String: &semver, + Whitelist: nil, + Negate: false, + }, + }, + }, + }, + }, + TrafficTypeName: "user", +} + +func TestRuleBasedSegmentRedis(t *testing.T) { + redisConfig := &commonsCfg.RedisConfig{ + Host: "localhost", + Port: 6379, + Password: "", + Prefix: "test-prefix-rulebased", + } + + prefixedClient, _ := redis.NewRedisClient(redisConfig, logging.NewLogger(&logging.LoggerOptions{})) + // Clean redis + defer func() { + keys, _ := prefixedClient.Keys("test-prefix-rulebased*") + for _, k := range keys { + prefixedClient.Del(k) + } + }() + raw, _ := json.Marshal(*splitRuleBased) + prefixedClient.Set("SPLITIO.split.rbsplit", raw, 0) + rbraw, _ := json.Marshal(*rbsegment1) + prefixedClient.Set("SPLITIO.rbsegment.rbsegment1", rbraw, 0) + + impTest := &ImpressionListenerTest{} + cfg := conf.Default() + cfg.LabelsEnabled = true + cfg.Advanced.ImpressionListener = impTest + cfg.ImpressionsMode = commonsCfg.ImpressionsModeOptimized + cfg.OperationMode = conf.RedisConsumer + cfg.Redis = *redisConfig + + factory, _ := NewSplitFactory("test", cfg) + client := factory.Client() + + // Calls treatments to generate one valid impression + attributes := make(map[string]interface{}) + attributes["version"] = "3.4.5" + evaluation := client.Treatment("user1", "rbsplit", attributes) + assert.Equal(t, "on", evaluation, "evaluation for rbsplit should be on") + client.Destroy() +} + func TestPrerequisites(t *testing.T) { var isDestroyCalled = false var splitsMock, _ = ioutil.ReadFile("../../testdata/splits_mock_5.json") diff --git a/splitio/client/factory.go b/splitio/client/factory.go index 703e536..f670acb 100644 --- a/splitio/client/factory.go +++ b/splitio/client/factory.go @@ -15,30 +15,30 @@ import ( impressionlistener "github.com/splitio/go-client/v6/splitio/impressionListener" "github.com/splitio/go-client/v6/splitio/impressions" - config "github.com/splitio/go-split-commons/v7/conf" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/engine" - "github.com/splitio/go-split-commons/v7/engine/evaluator" - "github.com/splitio/go-split-commons/v7/engine/grammar" - "github.com/splitio/go-split-commons/v7/flagsets" - "github.com/splitio/go-split-commons/v7/healthcheck/application" - "github.com/splitio/go-split-commons/v7/provisional" - "github.com/splitio/go-split-commons/v7/provisional/strategy" - "github.com/splitio/go-split-commons/v7/service/api" - "github.com/splitio/go-split-commons/v7/service/api/specs" - "github.com/splitio/go-split-commons/v7/service/local" - "github.com/splitio/go-split-commons/v7/storage" - "github.com/splitio/go-split-commons/v7/storage/inmemory" - "github.com/splitio/go-split-commons/v7/storage/inmemory/mutexmap" - "github.com/splitio/go-split-commons/v7/storage/inmemory/mutexqueue" - "github.com/splitio/go-split-commons/v7/storage/mocks" - "github.com/splitio/go-split-commons/v7/storage/redis" - "github.com/splitio/go-split-commons/v7/synchronizer" - "github.com/splitio/go-split-commons/v7/synchronizer/worker/event" - "github.com/splitio/go-split-commons/v7/synchronizer/worker/segment" - "github.com/splitio/go-split-commons/v7/synchronizer/worker/split" - "github.com/splitio/go-split-commons/v7/tasks" - "github.com/splitio/go-split-commons/v7/telemetry" + config "github.com/splitio/go-split-commons/v8/conf" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/engine" + "github.com/splitio/go-split-commons/v8/engine/evaluator" + "github.com/splitio/go-split-commons/v8/engine/grammar" + "github.com/splitio/go-split-commons/v8/flagsets" + "github.com/splitio/go-split-commons/v8/healthcheck/application" + "github.com/splitio/go-split-commons/v8/provisional" + "github.com/splitio/go-split-commons/v8/provisional/strategy" + "github.com/splitio/go-split-commons/v8/service/api" + "github.com/splitio/go-split-commons/v8/service/api/specs" + "github.com/splitio/go-split-commons/v8/service/local" + "github.com/splitio/go-split-commons/v8/storage" + "github.com/splitio/go-split-commons/v8/storage/inmemory" + "github.com/splitio/go-split-commons/v8/storage/inmemory/mutexmap" + "github.com/splitio/go-split-commons/v8/storage/inmemory/mutexqueue" + "github.com/splitio/go-split-commons/v8/storage/mocks" + "github.com/splitio/go-split-commons/v8/storage/redis" + "github.com/splitio/go-split-commons/v8/synchronizer" + "github.com/splitio/go-split-commons/v8/synchronizer/worker/event" + "github.com/splitio/go-split-commons/v8/synchronizer/worker/segment" + "github.com/splitio/go-split-commons/v8/synchronizer/worker/split" + "github.com/splitio/go-split-commons/v8/tasks" + "github.com/splitio/go-split-commons/v8/telemetry" "github.com/splitio/go-toolkit/v5/logging" ) @@ -124,7 +124,7 @@ func (f *SplitFactory) IsReady() bool { // initializates tasks for in-memory mode func (f *SplitFactory) initializationManager(readyChannel chan int, flagSetsInvalid int64) { - go f.syncManager.StartBGSyng(readyChannel, f.cfg.Advanced.RetryEnabled, func() { + go f.syncManager.StartBGSync(readyChannel, f.cfg.Advanced.RetryEnabled, func() { f.broadcastReadiness(sdkStatusReady, make([]string, 0), flagSetsInvalid) }) } @@ -296,10 +296,11 @@ func setupInMemoryFactory( splitAPI := api.NewSplitAPI(apikey, advanced, logger, metadata) + isProxy := splitAPI.SplitFetcher.IsProxy() evaluator := evaluator.NewEvaluator(splitsStorage, segmentsStorage, ruleBasedSegmentStorage, nil, engine.NewEngine(logger), logger, cfg.Advanced.FeatureFlagRules, cfg.Advanced.RuleBasedSegmentRules) ruleBuilder := grammar.NewRuleBuilder(segmentsStorage, ruleBasedSegmentStorage, nil, cfg.Advanced.FeatureFlagRules, cfg.Advanced.RuleBasedSegmentRules, logger, evaluator) workers := synchronizer.Workers{ - SplitUpdater: split.NewSplitUpdater(splitsStorage, ruleBasedSegmentStorage, splitAPI.SplitFetcher, logger, telemetryStorage, dummyHC, flagSetFilter, ruleBuilder), + SplitUpdater: split.NewSplitUpdater(splitsStorage, ruleBasedSegmentStorage, splitAPI.SplitFetcher, logger, telemetryStorage, dummyHC, flagSetFilter, ruleBuilder, isProxy, advanced.FlagsSpecVersion), SegmentUpdater: segment.NewSegmentUpdater(splitsStorage, segmentsStorage, ruleBasedSegmentStorage, splitAPI.SegmentFetcher, logger, telemetryStorage, dummyHC), EventRecorder: event.NewEventRecorderSingle(eventsStorage, splitAPI.EventRecorder, logger, metadata, telemetryStorage), TelemetryRecorder: telemetry.NewTelemetrySynchronizer(telemetryStorage, splitAPI.TelemetryRecorder, splitsStorage, segmentsStorage, logger, metadata, telemetryStorage), @@ -404,6 +405,7 @@ func setupRedisFactory(apikey string, cfg *conf.SplitSdkConfig, logger logging.L storages := sdkStorages{ splits: redis.NewSplitStorage(redisClient, logger, flagSetFilter), segments: redis.NewSegmentStorage(redisClient, logger), + ruleBasedSegments: redis.NewRuleBasedStorage(redisClient, logger), impressionsConsumer: impressionStorage, impressions: impressionStorage, events: redis.NewEventsStorage(redisClient, metadata, logger), diff --git a/splitio/client/factory_test.go b/splitio/client/factory_test.go index add7d99..61fa830 100644 --- a/splitio/client/factory_test.go +++ b/splitio/client/factory_test.go @@ -3,7 +3,7 @@ package client import ( "testing" - "github.com/splitio/go-split-commons/v7/flagsets" + "github.com/splitio/go-split-commons/v8/flagsets" "github.com/splitio/go-toolkit/v5/logging/mocks" "github.com/stretchr/testify/assert" diff --git a/splitio/client/input_validator.go b/splitio/client/input_validator.go index b4877c0..e6c162c 100644 --- a/splitio/client/input_validator.go +++ b/splitio/client/input_validator.go @@ -8,8 +8,8 @@ import ( "strconv" "strings" - "github.com/splitio/go-split-commons/v7/engine/evaluator/impressionlabels" - "github.com/splitio/go-split-commons/v7/storage" + "github.com/splitio/go-split-commons/v8/engine/evaluator/impressionlabels" + "github.com/splitio/go-split-commons/v8/storage" "github.com/splitio/go-toolkit/v5/datastructures/set" "github.com/splitio/go-toolkit/v5/logging" ) diff --git a/splitio/client/input_validator_test.go b/splitio/client/input_validator_test.go index edffc1f..b3081de 100644 --- a/splitio/client/input_validator_test.go +++ b/splitio/client/input_validator_test.go @@ -15,20 +15,20 @@ import ( "github.com/splitio/go-client/v6/splitio/conf" - commonsCfg "github.com/splitio/go-split-commons/v7/conf" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/flagsets" - "github.com/splitio/go-split-commons/v7/healthcheck/application" - "github.com/splitio/go-split-commons/v7/provisional" - "github.com/splitio/go-split-commons/v7/provisional/strategy" - "github.com/splitio/go-split-commons/v7/service/api" - authMocks "github.com/splitio/go-split-commons/v7/service/mocks" - "github.com/splitio/go-split-commons/v7/storage/filter" - "github.com/splitio/go-split-commons/v7/storage/inmemory/mutexmap" - "github.com/splitio/go-split-commons/v7/storage/inmemory/mutexqueue" - "github.com/splitio/go-split-commons/v7/storage/mocks" - "github.com/splitio/go-split-commons/v7/storage/redis" - "github.com/splitio/go-split-commons/v7/synchronizer" + commonsCfg "github.com/splitio/go-split-commons/v8/conf" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/flagsets" + "github.com/splitio/go-split-commons/v8/healthcheck/application" + "github.com/splitio/go-split-commons/v8/provisional" + "github.com/splitio/go-split-commons/v8/provisional/strategy" + "github.com/splitio/go-split-commons/v8/service/api" + authMocks "github.com/splitio/go-split-commons/v8/service/mocks" + "github.com/splitio/go-split-commons/v8/storage/filter" + "github.com/splitio/go-split-commons/v8/storage/inmemory/mutexmap" + "github.com/splitio/go-split-commons/v8/storage/inmemory/mutexqueue" + "github.com/splitio/go-split-commons/v8/storage/mocks" + "github.com/splitio/go-split-commons/v8/storage/redis" + "github.com/splitio/go-split-commons/v8/synchronizer" "github.com/splitio/go-toolkit/v5/logging" lMock "github.com/splitio/go-toolkit/v5/logging/mocks" diff --git a/splitio/client/manager.go b/splitio/client/manager.go index 3fb296e..b1fe116 100644 --- a/splitio/client/manager.go +++ b/splitio/client/manager.go @@ -3,8 +3,8 @@ package client import ( "fmt" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/storage" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/storage" "github.com/splitio/go-toolkit/v5/logging" ) diff --git a/splitio/client/manager_test.go b/splitio/client/manager_test.go index d25025d..a2efd22 100644 --- a/splitio/client/manager_test.go +++ b/splitio/client/manager_test.go @@ -3,9 +3,9 @@ package client import ( "testing" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/flagsets" - "github.com/splitio/go-split-commons/v7/storage/inmemory/mutexmap" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/flagsets" + "github.com/splitio/go-split-commons/v8/storage/inmemory/mutexmap" "github.com/splitio/go-toolkit/v5/logging" "github.com/stretchr/testify/assert" diff --git a/splitio/conf/sdkconf.go b/splitio/conf/sdkconf.go index 8484522..ad5c3ec 100644 --- a/splitio/conf/sdkconf.go +++ b/splitio/conf/sdkconf.go @@ -10,8 +10,8 @@ import ( "strings" impressionlistener "github.com/splitio/go-client/v6/splitio/impressionListener" - "github.com/splitio/go-split-commons/v7/conf" - "github.com/splitio/go-split-commons/v7/engine/grammar" + "github.com/splitio/go-split-commons/v8/conf" + "github.com/splitio/go-split-commons/v8/engine/grammar/constants" "github.com/splitio/go-toolkit/v5/datastructures/set" "github.com/splitio/go-toolkit/v5/logging" "github.com/splitio/go-toolkit/v5/nethelpers" @@ -26,14 +26,14 @@ const ( InMemoryStandAlone = "inmemory-standalone" ) -var featureFlagsRules = []string{grammar.MatcherTypeAllKeys, grammar.MatcherTypeInSegment, grammar.MatcherTypeWhitelist, grammar.MatcherTypeEqualTo, grammar.MatcherTypeGreaterThanOrEqualTo, grammar.MatcherTypeLessThanOrEqualTo, grammar.MatcherTypeBetween, - grammar.MatcherTypeEqualToSet, grammar.MatcherTypePartOfSet, grammar.MatcherTypeContainsAllOfSet, grammar.MatcherTypeContainsAnyOfSet, grammar.MatcherTypeStartsWith, grammar.MatcherTypeEndsWith, grammar.MatcherTypeContainsString, grammar.MatcherTypeInSplitTreatment, - grammar.MatcherTypeEqualToBoolean, grammar.MatcherTypeMatchesString, grammar.MatcherEqualToSemver, grammar.MatcherTypeGreaterThanOrEqualToSemver, grammar.MatcherTypeLessThanOrEqualToSemver, grammar.MatcherTypeBetweenSemver, grammar.MatcherTypeInListSemver, - grammar.MatcherTypeInRuleBasedSegment} -var ruleBasedSegmentRules = []string{grammar.MatcherTypeAllKeys, grammar.MatcherTypeInSegment, grammar.MatcherTypeWhitelist, grammar.MatcherTypeEqualTo, grammar.MatcherTypeGreaterThanOrEqualTo, grammar.MatcherTypeLessThanOrEqualTo, grammar.MatcherTypeBetween, - grammar.MatcherTypeEqualToSet, grammar.MatcherTypePartOfSet, grammar.MatcherTypeContainsAllOfSet, grammar.MatcherTypeContainsAnyOfSet, grammar.MatcherTypeStartsWith, grammar.MatcherTypeEndsWith, grammar.MatcherTypeContainsString, - grammar.MatcherTypeEqualToBoolean, grammar.MatcherTypeMatchesString, grammar.MatcherEqualToSemver, grammar.MatcherTypeGreaterThanOrEqualToSemver, grammar.MatcherTypeLessThanOrEqualToSemver, grammar.MatcherTypeBetweenSemver, grammar.MatcherTypeInListSemver, - grammar.MatcherTypeInRuleBasedSegment} +var featureFlagsRules = []string{constants.MatcherTypeAllKeys, constants.MatcherTypeInSegment, constants.MatcherTypeWhitelist, constants.MatcherTypeEqualTo, constants.MatcherTypeGreaterThanOrEqualTo, constants.MatcherTypeLessThanOrEqualTo, constants.MatcherTypeBetween, + constants.MatcherTypeEqualToSet, constants.MatcherTypePartOfSet, constants.MatcherTypeContainsAllOfSet, constants.MatcherTypeContainsAnyOfSet, constants.MatcherTypeStartsWith, constants.MatcherTypeEndsWith, constants.MatcherTypeContainsString, constants.MatcherTypeInSplitTreatment, + constants.MatcherTypeEqualToBoolean, constants.MatcherTypeMatchesString, constants.MatcherEqualToSemver, constants.MatcherTypeGreaterThanOrEqualToSemver, constants.MatcherTypeLessThanOrEqualToSemver, constants.MatcherTypeBetweenSemver, constants.MatcherTypeInListSemver, + constants.MatcherTypeInRuleBasedSegment} +var ruleBasedSegmentRules = []string{constants.MatcherTypeAllKeys, constants.MatcherTypeInSegment, constants.MatcherTypeWhitelist, constants.MatcherTypeEqualTo, constants.MatcherTypeGreaterThanOrEqualTo, constants.MatcherTypeLessThanOrEqualTo, constants.MatcherTypeBetween, + constants.MatcherTypeEqualToSet, constants.MatcherTypePartOfSet, constants.MatcherTypeContainsAllOfSet, constants.MatcherTypeContainsAnyOfSet, constants.MatcherTypeStartsWith, constants.MatcherTypeEndsWith, constants.MatcherTypeContainsString, + constants.MatcherTypeEqualToBoolean, constants.MatcherTypeMatchesString, constants.MatcherEqualToSemver, constants.MatcherTypeGreaterThanOrEqualToSemver, constants.MatcherTypeLessThanOrEqualToSemver, constants.MatcherTypeBetweenSemver, constants.MatcherTypeInListSemver, + constants.MatcherTypeInRuleBasedSegment} // SplitSdkConfig struct ... // struct used to setup a Split.io SDK client. diff --git a/splitio/conf/sdkconf_test.go b/splitio/conf/sdkconf_test.go index a2f118b..2ebda2f 100644 --- a/splitio/conf/sdkconf_test.go +++ b/splitio/conf/sdkconf_test.go @@ -3,7 +3,7 @@ package conf import ( "testing" - "github.com/splitio/go-split-commons/v7/conf" + "github.com/splitio/go-split-commons/v8/conf" ) func TestSdkConfNormalization(t *testing.T) { diff --git a/splitio/conf/util.go b/splitio/conf/util.go index 6f44ee8..8044ad4 100644 --- a/splitio/conf/util.go +++ b/splitio/conf/util.go @@ -3,8 +3,8 @@ package conf import ( "strings" - "github.com/splitio/go-split-commons/v7/conf" - "github.com/splitio/go-split-commons/v7/flagsets" + "github.com/splitio/go-split-commons/v8/conf" + "github.com/splitio/go-split-commons/v8/flagsets" ) // NormalizeSDKConf compares against SDK Config to set defaults diff --git a/splitio/impressionListener/impressions_listener_wrapper.go b/splitio/impressionListener/impressions_listener_wrapper.go index d276b8a..b1408d4 100644 --- a/splitio/impressionListener/impressions_listener_wrapper.go +++ b/splitio/impressionListener/impressions_listener_wrapper.go @@ -1,7 +1,7 @@ package impressionlistener import ( - "github.com/splitio/go-split-commons/v7/dtos" + "github.com/splitio/go-split-commons/v8/dtos" ) // ILObject struct to map entire data for listener diff --git a/splitio/impressions/builder.go b/splitio/impressions/builder.go index 4f94413..a69da5f 100644 --- a/splitio/impressions/builder.go +++ b/splitio/impressions/builder.go @@ -2,18 +2,18 @@ package impressions import ( "github.com/splitio/go-client/v6/splitio/conf" - config "github.com/splitio/go-split-commons/v7/conf" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/provisional" - "github.com/splitio/go-split-commons/v7/provisional/strategy" - "github.com/splitio/go-split-commons/v7/service/api" - "github.com/splitio/go-split-commons/v7/storage" - "github.com/splitio/go-split-commons/v7/storage/filter" - "github.com/splitio/go-split-commons/v7/synchronizer" - "github.com/splitio/go-split-commons/v7/synchronizer/worker/impression" - "github.com/splitio/go-split-commons/v7/synchronizer/worker/impressionscount" - "github.com/splitio/go-split-commons/v7/tasks" - "github.com/splitio/go-split-commons/v7/telemetry" + config "github.com/splitio/go-split-commons/v8/conf" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/provisional" + "github.com/splitio/go-split-commons/v8/provisional/strategy" + "github.com/splitio/go-split-commons/v8/service/api" + "github.com/splitio/go-split-commons/v8/storage" + "github.com/splitio/go-split-commons/v8/storage/filter" + "github.com/splitio/go-split-commons/v8/synchronizer" + "github.com/splitio/go-split-commons/v8/synchronizer/worker/impression" + "github.com/splitio/go-split-commons/v8/synchronizer/worker/impressionscount" + "github.com/splitio/go-split-commons/v8/tasks" + "github.com/splitio/go-split-commons/v8/telemetry" "github.com/splitio/go-toolkit/v5/logging" ) diff --git a/splitio/impressions/builder_test.go b/splitio/impressions/builder_test.go index acc1473..ccf2c6f 100644 --- a/splitio/impressions/builder_test.go +++ b/splitio/impressions/builder_test.go @@ -4,13 +4,13 @@ import ( "testing" "github.com/splitio/go-client/v6/splitio/conf" - config "github.com/splitio/go-split-commons/v7/conf" - "github.com/splitio/go-split-commons/v7/dtos" - "github.com/splitio/go-split-commons/v7/service/api" - "github.com/splitio/go-split-commons/v7/storage/inmemory" - "github.com/splitio/go-split-commons/v7/storage/inmemory/mutexqueue" - "github.com/splitio/go-split-commons/v7/storage/mocks" - "github.com/splitio/go-split-commons/v7/synchronizer" + config "github.com/splitio/go-split-commons/v8/conf" + "github.com/splitio/go-split-commons/v8/dtos" + "github.com/splitio/go-split-commons/v8/service/api" + "github.com/splitio/go-split-commons/v8/storage/inmemory" + "github.com/splitio/go-split-commons/v8/storage/inmemory/mutexqueue" + "github.com/splitio/go-split-commons/v8/storage/mocks" + "github.com/splitio/go-split-commons/v8/synchronizer" "github.com/splitio/go-toolkit/v5/logging" ) diff --git a/splitio/version.go b/splitio/version.go index 17c718e..ea04f7f 100644 --- a/splitio/version.go +++ b/splitio/version.go @@ -1,4 +1,4 @@ package splitio // Version contains a string with the split sdk version -const Version = "6.8.0" +const Version = "6.8.1"