// Copyright 2023 The etcd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package e2e import ( "testing" "github.com/google/go-cmp/cmp" ) func TestEtcdServerProcessConfig(t *testing.T) { tcs := []struct { name string config *EtcdProcessClusterConfig expectArgs []string }{ { name: "Default", config: NewConfig(), expectArgs: []string{ "--name=TestEtcdServerProcessConfigDefault-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=10000", }, }, { name: "SnapshotCount", config: NewConfig(WithSnapshotCount(42)), expectArgs: []string{ "--name=TestEtcdServerProcessConfigSnapshotCount-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=42", }, }, { name: "SnapshotCatchUpEntries", config: NewConfig(WithSnapshotCatchUpEntries(12)), expectArgs: []string{ "--name=TestEtcdServerProcessConfigSnapshotCatchUpEntries-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=10000", "--experimental-snapshot-catchup-entries=12", }, }, { name: "QuotaBackendBytes", config: NewConfig(WithQuotaBackendBytes(123)), expectArgs: []string{ "--name=TestEtcdServerProcessConfigQuotaBackendBytes-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=10000", "--quota-backend-bytes=123", }, }, { name: "CorruptCheck", config: NewConfig(WithInitialCorruptCheck(true)), expectArgs: []string{ "--name=TestEtcdServerProcessConfigCorruptCheck-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=10000", "--experimental-initial-corrupt-check", }, }, { name: "StrictReconfigCheck", config: NewConfig(WithStrictReconfigCheck(false)), expectArgs: []string{ "--name=TestEtcdServerProcessConfigStrictReconfigCheck-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=10000", "--strict-reconfig-check=false", }, }, { name: "CatchUpEntries", config: NewConfig(WithSnapshotCatchUpEntries(100)), expectArgs: []string{ "--name=TestEtcdServerProcessConfigCatchUpEntries-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=10000", "--experimental-snapshot-catchup-entries=100", }, }, { name: "CatchUpEntriesLastVersion", config: NewConfig(WithSnapshotCatchUpEntries(100), WithVersion(LastVersion)), expectArgs: []string{ "--name=TestEtcdServerProcessConfigCatchUpEntriesLastVersion-test-0", "--listen-client-urls=http://localhost:0", "--advertise-client-urls=http://localhost:0", "--listen-peer-urls=http://localhost:1", "--initial-advertise-peer-urls=http://localhost:1", "--initial-cluster-token=new", "--data-dir=/tmp/fake/member-0", "--snapshot-count=10000", }, }, } for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { tc.config.BaseDataDirPath = "/tmp/fake" if diff := cmp.Diff(tc.config.EtcdServerProcessConfig(t, 0).Args, tc.expectArgs); diff != "" { t.Errorf("diff: %s", diff) } }) } }