Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions examples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,6 @@ func main() {
client.WithPollingConfigManager(time.Second, nil),
client.WithBatchEventProcessor(event.DefaultBatchSize, event.DefaultEventQueueSize, event.DefaultEventFlushInterval),
)

optimizelyClient.Close()
}
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ go 1.12
require (
github.com/google/uuid v1.1.1
github.com/json-iterator/go v1.1.7
github.com/pkg/errors v0.8.1
github.com/pkg/profile v1.3.0
github.com/stretchr/testify v1.4.0
github.com/twmb/murmur3 v1.0.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJ
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742 h1:Esafd1046DLDQ0W1YjYsBW+p8U2u7vzgW2SQVmlNazg=
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.3.0 h1:OQIvuDgm00gWVWGTf4m4mCt6W1/0YqU7Ntg0mySWgaI=
github.com/pkg/profile v1.3.0/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
Expand Down
6 changes: 3 additions & 3 deletions pkg/client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"runtime/debug"
"strconv"

"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/decision"
"github.com/optimizely/go-sdk/pkg/entities"
"github.com/optimizely/go-sdk/pkg/event"
Expand All @@ -36,7 +36,7 @@ var logger = logging.GetLogger("Client")

// OptimizelyClient is the entry point to the Optimizely SDK
type OptimizelyClient struct {
ConfigManager pkg.ProjectConfigManager
ConfigManager config.ProjectConfigManager
DecisionService decision.Service
EventProcessor event.Processor
notificationCenter notification.Center
Expand Down Expand Up @@ -476,7 +476,7 @@ func (o *OptimizelyClient) RemoveOnTrack(id int) error {
}

// GetProjectConfig returns the current ProjectConfig or nil if the instance is not valid.
func (o *OptimizelyClient) GetProjectConfig() (projectConfig pkg.ProjectConfig, err error) {
func (o *OptimizelyClient) GetProjectConfig() (projectConfig config.ProjectConfig, err error) {

projectConfig, err = o.ConfigManager.GetConfig()
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions pkg/client/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"sync"
"testing"

"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/decision"
"github.com/optimizely/go-sdk/pkg/entities"
"github.com/optimizely/go-sdk/pkg/event"
Expand Down Expand Up @@ -103,7 +103,7 @@ func (m *MockNotificationCenter) Send(notificationType notification.Type, notifi
}

type TestConfig struct {
pkg.ProjectConfig
config.ProjectConfig
}

func (TestConfig) GetEventByKey(key string) (entities.Event, error) {
Expand Down
7 changes: 3 additions & 4 deletions pkg/client/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (
"errors"
"time"

"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/decision"
"github.com/optimizely/go-sdk/pkg/event"
Expand All @@ -34,7 +33,7 @@ type OptimizelyFactory struct {
SDKKey string
Datafile []byte

configManager pkg.ProjectConfigManager
configManager config.ProjectConfigManager
decisionService decision.Service
eventDispatcher event.Dispatcher
eventProcessor event.Processor
Expand Down Expand Up @@ -123,7 +122,7 @@ func WithPollingConfigManager(pollingInterval time.Duration, initDataFile []byte
}

// WithConfigManager sets polling config manager on a client.
func WithConfigManager(configManager pkg.ProjectConfigManager) OptionFunc {
func WithConfigManager(configManager config.ProjectConfigManager) OptionFunc {
return func(f *OptimizelyFactory) {
f.configManager = configManager
}
Expand Down Expand Up @@ -181,7 +180,7 @@ func WithExecutionContext(executionContext utils.ExecutionCtx) OptionFunc {

// StaticClient returns a client initialized with a static project config.
func (f OptimizelyFactory) StaticClient() (*OptimizelyClient, error) {
var configManager pkg.ProjectConfigManager
var configManager config.ProjectConfigManager

if f.SDKKey != "" {
staticConfigManager, err := config.NewStaticProjectConfigManagerFromURL(f.SDKKey)
Expand Down
14 changes: 7 additions & 7 deletions pkg/client/fixtures_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ package client
import (
"fmt"

"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/decision"
"github.com/optimizely/go-sdk/pkg/entities"
"github.com/optimizely/go-sdk/pkg/event"
Expand All @@ -33,7 +33,7 @@ import (
*/

type MockProjectConfig struct {
pkg.ProjectConfig
config.ProjectConfig
mock.Mock
}

Expand Down Expand Up @@ -79,17 +79,17 @@ func (c *MockProjectConfig) GetBotFiltering() bool {
}

type MockProjectConfigManager struct {
projectConfig pkg.ProjectConfig
projectConfig config.ProjectConfig
mock.Mock
}

func (p *MockProjectConfigManager) GetConfig() (pkg.ProjectConfig, error) {
func (p *MockProjectConfigManager) GetConfig() (config.ProjectConfig, error) {
if p.projectConfig != nil {
return p.projectConfig, nil
}

args := p.Called()
return args.Get(0).(pkg.ProjectConfig), args.Error(1)
return args.Get(0).(config.ProjectConfig), args.Error(1)
}

func (p *MockProjectConfigManager) OnProjectConfigUpdate(callback func(notification.ProjectConfigUpdateNotification)) (int, error) {
Expand Down Expand Up @@ -126,10 +126,10 @@ func (m *MockEventProcessor) ProcessEvent(event event.UserEvent) bool {
}

type PanickingConfigManager struct {
pkg.ProjectConfigManager
config.ProjectConfigManager
}

func (m *PanickingConfigManager) GetConfig() (pkg.ProjectConfig, error) {
func (m *PanickingConfigManager) GetConfig() (config.ProjectConfig, error) {
panic("I'm panicking")
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/interface.go → pkg/config/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
* limitations under the License. *
***************************************************************************/

// Package pkg //
package pkg
// Package config //
package config

import (
"github.com/optimizely/go-sdk/pkg/entities"
Expand Down
5 changes: 2 additions & 3 deletions pkg/config/polling_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"sync"
"time"

"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config/datafileprojectconfig"
"github.com/optimizely/go-sdk/pkg/logging"
"github.com/optimizely/go-sdk/pkg/notification"
Expand Down Expand Up @@ -60,7 +59,7 @@ type PollingProjectConfigManager struct {

configLock sync.RWMutex
err error
projectConfig pkg.ProjectConfig
projectConfig ProjectConfig
}

// OptionFunc is used to provide custom configuration to the PollingProjectConfigManager.
Expand Down Expand Up @@ -208,7 +207,7 @@ func NewPollingProjectConfigManager(sdkKey string, pollingMangerOptions ...Optio
}

// GetConfig returns the project config
func (cm *PollingProjectConfigManager) GetConfig() (pkg.ProjectConfig, error) {
func (cm *PollingProjectConfigManager) GetConfig() (ProjectConfig, error) {
cm.configLock.RLock()
defer cm.configLock.RUnlock()
if cm.projectConfig == nil {
Expand Down
7 changes: 3 additions & 4 deletions pkg/config/static_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,14 @@ import (
"fmt"
"sync"

"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config/datafileprojectconfig"
"github.com/optimizely/go-sdk/pkg/notification"
"github.com/optimizely/go-sdk/pkg/utils"
)

// StaticProjectConfigManager maintains a static copy of the project config
type StaticProjectConfigManager struct {
projectConfig pkg.ProjectConfig
projectConfig ProjectConfig
configLock sync.Mutex
}

Expand Down Expand Up @@ -61,14 +60,14 @@ func NewStaticProjectConfigManagerFromPayload(payload []byte) (*StaticProjectCon
}

// NewStaticProjectConfigManager creates a new instance of the manager with the given project config
func NewStaticProjectConfigManager(config pkg.ProjectConfig) *StaticProjectConfigManager {
func NewStaticProjectConfigManager(config ProjectConfig) *StaticProjectConfigManager {
return &StaticProjectConfigManager{
projectConfig: config,
}
}

// GetConfig returns the project config
func (cm *StaticProjectConfigManager) GetConfig() (pkg.ProjectConfig, error) {
func (cm *StaticProjectConfigManager) GetConfig() (ProjectConfig, error) {
cm.configLock.Lock()
defer cm.configLock.Unlock()
return cm.projectConfig, nil
Expand Down
6 changes: 3 additions & 3 deletions pkg/decision/entities.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,21 @@
package decision

import (
"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/decision/reasons"
"github.com/optimizely/go-sdk/pkg/entities"
)

// ExperimentDecisionContext contains the information needed to be able to make a decision for a given experiment
type ExperimentDecisionContext struct {
Experiment *entities.Experiment
ProjectConfig pkg.ProjectConfig
ProjectConfig config.ProjectConfig
}

// FeatureDecisionContext contains the information needed to be able to make a decision for a given feature
type FeatureDecisionContext struct {
Feature *entities.Feature
ProjectConfig pkg.ProjectConfig
ProjectConfig config.ProjectConfig
Variable entities.Variable
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/decision/helpers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@
package decision

import (
"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/entities"
"github.com/stretchr/testify/mock"
)

// Mock implementation of ProjectConfig
type mockProjectConfig struct {
pkg.ProjectConfig
config.ProjectConfig
mock.Mock
}

Expand Down
21 changes: 9 additions & 12 deletions pkg/event/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,8 @@ import (
"strings"
"time"

"github.com/optimizely/go-sdk/pkg"

guuid "github.com/google/uuid"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/entities"
"github.com/optimizely/go-sdk/pkg/logging"
"github.com/optimizely/go-sdk/pkg/utils"
Expand All @@ -34,8 +33,6 @@ import (
var efLogger = logging.GetLogger("EventFactory")

const impressionKey string = "campaign_activated"
const clientKey string = pkg.ClientName
const clientVersion string = pkg.Version
const attributeType = "custom"
const specialPrefix = "$opt_"
const botFilteringKey = "$opt_bot_filtering"
Expand All @@ -52,20 +49,20 @@ func makeTimestamp() int64 {
}

// CreateEventContext creates and returns EventContext
func CreateEventContext(projectConfig pkg.ProjectConfig) Context {
func CreateEventContext(projectConfig config.ProjectConfig) Context {
context := Context{}
context.ProjectID = projectConfig.GetProjectID()
context.Revision = projectConfig.GetRevision()
context.AccountID = projectConfig.GetAccountID()
context.ClientName = clientKey
context.ClientVersion = clientVersion
context.ClientName = ClientName
context.ClientVersion = Version
context.AnonymizeIP = projectConfig.GetAnonymizeIP()
context.BotFiltering = projectConfig.GetBotFiltering()

return context
}

func createImpressionEvent(projectConfig pkg.ProjectConfig, experiment entities.Experiment,
func createImpressionEvent(projectConfig config.ProjectConfig, experiment entities.Experiment,
variation entities.Variation, attributes map[string]interface{}) ImpressionEvent {

impression := ImpressionEvent{}
Expand All @@ -80,7 +77,7 @@ func createImpressionEvent(projectConfig pkg.ProjectConfig, experiment entities.
}

// CreateImpressionUserEvent creates and returns ImpressionEvent for user
func CreateImpressionUserEvent(projectConfig pkg.ProjectConfig, experiment entities.Experiment,
func CreateImpressionUserEvent(projectConfig config.ProjectConfig, experiment entities.Experiment,
variation entities.Variation,
userContext entities.UserContext) UserEvent {

Expand Down Expand Up @@ -116,7 +113,7 @@ func createImpressionVisitor(userEvent UserEvent) Visitor {
}

// create a conversion event
func createConversionEvent(projectConfig pkg.ProjectConfig, event entities.Event, attributes, eventTags map[string]interface{}) ConversionEvent {
func createConversionEvent(projectConfig config.ProjectConfig, event entities.Event, attributes, eventTags map[string]interface{}) ConversionEvent {
conversion := ConversionEvent{}

conversion.Key = event.Key
Expand All @@ -128,7 +125,7 @@ func createConversionEvent(projectConfig pkg.ProjectConfig, event entities.Event
}

// CreateConversionUserEvent creates and returns ConversionEvent for user
func CreateConversionUserEvent(projectConfig pkg.ProjectConfig, event entities.Event, userContext entities.UserContext, eventTags map[string]interface{}) UserEvent {
func CreateConversionUserEvent(projectConfig config.ProjectConfig, event entities.Event, userContext entities.UserContext, eventTags map[string]interface{}) UserEvent {

userEvent := UserEvent{}
userEvent.Timestamp = makeTimestamp()
Expand Down Expand Up @@ -221,7 +218,7 @@ func createBatchEvent(userEvent UserEvent, visitor Visitor) Batch {
}

// get visitor attributes from user attributes
func getEventAttributes(projectConfig pkg.ProjectConfig, attributes map[string]interface{}) []VisitorAttribute {
func getEventAttributes(projectConfig config.ProjectConfig, attributes map[string]interface{}) []VisitorAttribute {
var eventAttributes = []VisitorAttribute{}

for key, value := range attributes {
Expand Down
4 changes: 2 additions & 2 deletions pkg/event/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ import (
"testing"
"time"

"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/entities"
"github.com/optimizely/go-sdk/pkg/utils"
"github.com/stretchr/testify/assert"
)

type TestConfig struct {
pkg.ProjectConfig
config.ProjectConfig
}

func (TestConfig) GetAttributeByKey(string) (entities.Attribute, error) {
Expand Down
4 changes: 2 additions & 2 deletions pkg/version.go → pkg/event/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
* limitations under the License. *
***************************************************************************/

// Package pkg //
package pkg
// Package event //
package event

// Version is the current version of the client
const Version = "1.0.0-rc1"
Expand Down
4 changes: 2 additions & 2 deletions tests/integration/optlyplugins/userprofileservice/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
package userprofileservice

import (
"github.com/optimizely/go-sdk/pkg"
"github.com/optimizely/go-sdk/pkg/config"
"github.com/optimizely/go-sdk/pkg/decision"
"github.com/optimizely/go-sdk/tests/integration/models"
)
Expand All @@ -29,7 +29,7 @@ type UPSHelper interface {
}

// CreateUserProfileService creates a user profile service with the given parameters
func CreateUserProfileService(config pkg.ProjectConfig, apiOptions models.APIOptions) decision.UserProfileService {
func CreateUserProfileService(config config.ProjectConfig, apiOptions models.APIOptions) decision.UserProfileService {
var userProfileService decision.UserProfileService
switch apiOptions.UserProfileServiceType {
case "NormalService":
Expand Down
Loading