diff --git a/test/README.md b/test/README.md index 6564c82df8..b57576c7ca 100644 --- a/test/README.md +++ b/test/README.md @@ -57,7 +57,7 @@ | `cluster list` | Y | | | Y | | | | `cluster start` | N | | | Y | | | | `cluster pause` | N | | | Y | | | -| `cluster update` | Y | | | Y | | | +| `cluster update` | Y | Y | Y | Y | Y | Y | | `cluster watch` | Y | | | Y | | | | `cluster onlineArchive create` | Y | | | Y | N | N | | `cluster onlineArchive delete` | Y | | | Y | N | N | diff --git a/test/e2e/cloud_manager/deploy_replica_set_test.go b/test/e2e/cloud_manager/deploy_replica_set_test.go index dfac29edf8..05079aa18e 100644 --- a/test/e2e/cloud_manager/deploy_replica_set_test.go +++ b/test/e2e/cloud_manager/deploy_replica_set_test.go @@ -115,6 +115,30 @@ func TestDeployReplicaSet(t *testing.T) { } }) + t.Run("Update", func(t *testing.T) { + if err := generateRSConfigUpdate(testFile); err != nil { + t.Fatalf("unexpected error: %v", err) + } + + cmd := exec.Command(cliPath, + entity, + clustersEntity, + "update", + clusterName, + "-f", + testFile, + ) + + cmd.Env = os.Environ() + resp, err := cmd.CombinedOutput() + + if err != nil { + t.Fatalf("unexpected error: %v, resp: %v\n", err, string(resp)) + } + }) + + t.Run("Watch", watchAutomation(cliPath)) + t.Run("Reclaim free space", func(t *testing.T) { cmd := exec.Command(cliPath, entity, diff --git a/test/e2e/cloud_manager/helper_test.go b/test/e2e/cloud_manager/helper_test.go index 89ed5bb1db..587f1e25b3 100644 --- a/test/e2e/cloud_manager/helper_test.go +++ b/test/e2e/cloud_manager/helper_test.go @@ -176,6 +176,42 @@ func generateRSConfig(filename, hostname, clusterName, version, fcVersion string return jsonEncoder.Encode(cluster) } +func generateRSConfigUpdate(filename string) error { + defaultWriteConcernJ := true + jsonData, err := os.ReadFile(filename) + if err != nil { + return err + } + + var cluster convert.ClusterConfig + err = json.Unmarshal(jsonData, &cluster) + if err != nil { + return err + } + + for i := 0; i < len(cluster.Processes); i++ { + cluster.Processes[i].DefaultRWConcern = &convert.DefaultRWConcern{ + DefaultReadConcern: &convert.DefaultReadConcern{ + Level: "majority", + }, + DefaultWriteConcern: &convert.DefaultWriteConcern{ + W: 1, + J: &defaultWriteConcernJ, + Wtimeout: 0, + }, + } + } + + out, err := os.Create(filename) + if err != nil { + return err + } + defer out.Close() + jsonEncoder := json.NewEncoder(out) + jsonEncoder.SetIndent("", " ") + return jsonEncoder.Encode(cluster) +} + func generateShardedConfig(filename, hostname, clusterName, version, fcVersion string) error { configFile, err := os.Create(filename) if err != nil {