From d9c36ef01277a78082f2ce193f54d584b4276f50 Mon Sep 17 00:00:00 2001 From: Matheus Pimenta Date: Thu, 15 Aug 2019 13:12:51 -0300 Subject: [PATCH 1/3] Reducing number of places to write operation keys from three to two --- loadtest/app.go | 3 --- loadtest/clan.go | 11 ++++------- loadtest/membership.go | 9 +++------ loadtest/player.go | 5 +---- 4 files changed, 8 insertions(+), 20 deletions(-) diff --git a/loadtest/app.go b/loadtest/app.go index 89c25b5a..ff6831ce 100644 --- a/loadtest/app.go +++ b/loadtest/app.go @@ -41,9 +41,6 @@ func (app *App) configure(configFile, sharedClansFile string) { } func (app *App) setConfigurationDefaults() { - app.setPlayerConfigurationDefaults() - app.setClanConfigurationDefaults() - app.setMembershipConfigurationDefaults() app.setClientConfigurationDefaults() } diff --git a/loadtest/clan.go b/loadtest/clan.go index a92ab62a..d40554fe 100644 --- a/loadtest/clan.go +++ b/loadtest/clan.go @@ -4,13 +4,6 @@ import ( "github.com/topfreegames/khan/lib" ) -func (app *App) setClanConfigurationDefaults() { - app.setOperationProbabilityConfigDefault("updateSharedClanScore", 1) - app.setOperationProbabilityConfigDefault("createClan", 1) - app.setOperationProbabilityConfigDefault("leaveClan", 1) - app.setOperationProbabilityConfigDefault("transferClanOwnership", 1) -} - func (app *App) configureClanOperations() { app.appendOperation(app.getUpdateSharedClanScoreOperation()) app.appendOperation(app.getCreateClanOperation()) @@ -20,6 +13,7 @@ func (app *App) configureClanOperations() { func (app *App) getUpdateSharedClanScoreOperation() operation { operationKey := "updateSharedClanScore" + app.setOperationProbabilityConfigDefault(operationKey, 1) return operation{ probability: app.getOperationProbabilityConfig(operationKey), canExecute: func() (bool, error) { @@ -92,6 +86,7 @@ func (app *App) getUpdateSharedClanScoreOperation() operation { func (app *App) getCreateClanOperation() operation { operationKey := "createClan" + app.setOperationProbabilityConfigDefault(operationKey, 1) return operation{ probability: app.getOperationProbabilityConfig(operationKey), canExecute: func() (bool, error) { @@ -130,6 +125,7 @@ func (app *App) getCreateClanOperation() operation { func (app *App) getLeaveClanOperation() operation { operationKey := "leaveClan" + app.setOperationProbabilityConfigDefault(operationKey, 1) return operation{ probability: app.getOperationProbabilityConfig(operationKey), canExecute: func() (bool, error) { @@ -165,6 +161,7 @@ func (app *App) getLeaveClanOperation() operation { func (app *App) getTransferClanOwnershipOperation() operation { operationKey := "transferClanOwnership" + app.setOperationProbabilityConfigDefault(operationKey, 1) return operation{ probability: app.getOperationProbabilityConfig(operationKey), canExecute: func() (bool, error) { diff --git a/loadtest/membership.go b/loadtest/membership.go index 9580a48b..5fc7e25c 100644 --- a/loadtest/membership.go +++ b/loadtest/membership.go @@ -4,19 +4,15 @@ import ( "github.com/topfreegames/khan/lib" ) -func (app *App) setMembershipConfigurationDefaults() { - app.setOperationProbabilityConfigDefault("applyForMembership", 1) - app.setOperationProbabilityConfigDefault("selfDeleteMembership", 1) -} - func (app *App) configureMembershipOperations() { app.appendOperation(app.getApplyForMembershipOperation()) app.appendOperation(app.getSelfDeleteMembershipOperation()) } func (app *App) getApplyForMembershipOperation() operation { - membershipLevel := app.config.GetString("loadtest.game.membershipLevel") operationKey := "applyForMembership" + app.setOperationProbabilityConfigDefault(operationKey, 1) + membershipLevel := app.config.GetString("loadtest.game.membershipLevel") return operation{ probability: app.getOperationProbabilityConfig(operationKey), canExecute: func() (bool, error) { @@ -67,6 +63,7 @@ func (app *App) getApplyForMembershipOperation() operation { func (app *App) getSelfDeleteMembershipOperation() operation { operationKey := "selfDeleteMembership" + app.setOperationProbabilityConfigDefault(operationKey, 1) return operation{ probability: app.getOperationProbabilityConfig(operationKey), canExecute: func() (bool, error) { diff --git a/loadtest/player.go b/loadtest/player.go index 4906e766..02a2b3e2 100644 --- a/loadtest/player.go +++ b/loadtest/player.go @@ -1,15 +1,12 @@ package loadtest -func (app *App) setPlayerConfigurationDefaults() { - app.setOperationProbabilityConfigDefault("createPlayer", 1) -} - func (app *App) configurePlayerOperations() { app.appendOperation(app.getCreatePlayerOperation()) } func (app *App) getCreatePlayerOperation() operation { operationKey := "createPlayer" + app.setOperationProbabilityConfigDefault(operationKey, 1) return operation{ probability: app.getOperationProbabilityConfig(operationKey), canExecute: func() (bool, error) { From fc880d4f73017ab7735c2712ae805db679ff8402 Mon Sep 17 00:00:00 2001 From: Matheus Pimenta Date: Thu, 15 Aug 2019 13:22:20 -0300 Subject: [PATCH 2/3] Adding searchClans operation to loadtest --- config/local.yaml | 2 ++ loadtest/README.md | 3 +++ loadtest/clan.go | 25 +++++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/config/local.yaml b/config/local.yaml index 813bd947..cc8e8fe2 100644 --- a/config/local.yaml +++ b/config/local.yaml @@ -78,3 +78,5 @@ loadtest: probability: 1 selfDeleteMembership: probability: 1 + searchClans: + probability: 1 diff --git a/loadtest/README.md b/loadtest/README.md index 52f98a20..8e1121b5 100644 --- a/loadtest/README.md +++ b/loadtest/README.md @@ -58,6 +58,8 @@ loadtest: probability: 1 selfDeleteMembership: probability: 1 + searchClans: + probability: 1 ``` Or setting the following environment variables: ``` @@ -70,6 +72,7 @@ KHAN_LOADTEST_OPERATIONS_LEAVECLAN_PROBABILITY (default: 0.01) KHAN_LOADTEST_OPERATIONS_TRANSFERCLANOWNERSHIP_PROBABILITY (default: 0.01) KHAN_LOADTEST_OPERATIONS_APPLYFORMEMBERSHIP_PROBABILITY (default: 0.01) KHAN_LOADTEST_OPERATIONS_SELFDELETEMEMBERSHIP_PROBABILITY (default: 0.01) +KHAN_LOADTEST_OPERATIONS_SEARCHCLANS_PROBABILITY (default: 0.01) ``` # Operations with clans shared among different load test processes diff --git a/loadtest/clan.go b/loadtest/clan.go index d40554fe..0444b380 100644 --- a/loadtest/clan.go +++ b/loadtest/clan.go @@ -9,6 +9,7 @@ func (app *App) configureClanOperations() { app.appendOperation(app.getCreateClanOperation()) app.appendOperation(app.getLeaveClanOperation()) app.appendOperation(app.getTransferClanOwnershipOperation()) + app.appendOperation(app.getSearchClansOperation()) } func (app *App) getUpdateSharedClanScoreOperation() operation { @@ -190,3 +191,27 @@ func (app *App) getTransferClanOwnershipOperation() operation { }, } } + +func (app *App) getSearchClansOperation() operation { + operationKey := "searchClans" + app.setOperationProbabilityConfigDefault(operationKey, 1) + return operation{ + probability: app.getOperationProbabilityConfig(operationKey), + canExecute: func() (bool, error) { + return true, nil + }, + execute: func() error { + searchClansResult, err := app.client.SearchClans(nil, getRandomClanName()) + if err != nil { + return err + } + if searchClansResult == nil { + return &GenericError{"NilPayloadError", "Operation searchClans returned no error with nil payload."} + } + if !searchClansResult.Success { + return &GenericError{"FailurePayloadError", "Operation searchClans returned no error with falure payload."} + } + return nil + }, + } +} From a524b015445d2a0b96a04ac923f2d8fba8e4cc6b Mon Sep 17 00:00:00 2001 From: Matheus Pimenta Date: Thu, 15 Aug 2019 13:34:44 -0300 Subject: [PATCH 3/3] Fix typo --- loadtest/clan.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/loadtest/clan.go b/loadtest/clan.go index 0444b380..83288def 100644 --- a/loadtest/clan.go +++ b/loadtest/clan.go @@ -209,7 +209,7 @@ func (app *App) getSearchClansOperation() operation { return &GenericError{"NilPayloadError", "Operation searchClans returned no error with nil payload."} } if !searchClansResult.Success { - return &GenericError{"FailurePayloadError", "Operation searchClans returned no error with falure payload."} + return &GenericError{"FailurePayloadError", "Operation searchClans returned no error with failure payload."} } return nil },