github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/pkg/ha/lightning_coordinate_test.go (about) 1 // Copyright 2022 PingCAP, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package ha 15 16 import ( 17 "testing" 18 19 "github.com/stretchr/testify/require" 20 "go.etcd.io/etcd/tests/v3/integration" 21 ) 22 23 func TestLightningStatus(t *testing.T) { 24 integration.BeforeTestExternal(t) 25 mockCluster := integration.NewClusterV3(t, &integration.ClusterConfig{Size: 1}) 26 defer mockCluster.Terminate(t) 27 28 etcdCli := mockCluster.RandClient() 29 task := "test-lightning-status" 30 source1 := "s1" 31 source2 := "s2" 32 status, err := GetAllLightningStatus(etcdCli, task) 33 require.NoError(t, err) 34 require.Len(t, status, 0) 35 36 _, err = PutLightningNotReadyForAllSources(etcdCli, task, []string{source1, source2}) 37 require.NoError(t, err) 38 39 status, err = GetAllLightningStatus(etcdCli, task) 40 require.NoError(t, err) 41 require.Equal(t, []string{LightningNotReady, LightningNotReady}, status) 42 43 _, err = PutLightningStatus(etcdCli, task, source1, LightningReady) 44 require.NoError(t, err) 45 status, err = GetAllLightningStatus(etcdCli, task) 46 require.NoError(t, err) 47 require.Contains(t, status, LightningReady) 48 require.Contains(t, status, LightningNotReady) 49 50 _, err = DeleteLightningStatusForTask(etcdCli, task) 51 require.NoError(t, err) 52 status, err = GetAllLightningStatus(etcdCli, task) 53 require.NoError(t, err) 54 require.Len(t, status, 0) 55 }