github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/pkg/ha/openapi_task_config_test.go (about) 1 // Copyright 2021 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 . "github.com/pingcap/check" 18 "github.com/pingcap/tiflow/dm/openapi" 19 "github.com/pingcap/tiflow/dm/openapi/fixtures" 20 "github.com/pingcap/tiflow/dm/pkg/terror" 21 ) 22 23 func (t *testForEtcd) TestOpenAPITaskConfigEtcd(c *C) { 24 defer clearTestInfoOperation(c) 25 26 task1, err := fixtures.GenNoShardOpenAPITaskForTest() 27 task1.Name = "test-1" 28 c.Assert(err, IsNil) 29 task2, err := fixtures.GenShardAndFilterOpenAPITaskForTest() 30 task2.Name = "test-2" 31 c.Assert(err, IsNil) 32 33 // no openapi task config exist. 34 task1InEtcd, err := GetOpenAPITaskTemplate(etcdTestCli, task1.Name) 35 c.Assert(err, IsNil) 36 c.Assert(task1InEtcd, IsNil) 37 38 task2InEtcd, err := GetOpenAPITaskTemplate(etcdTestCli, task2.Name) 39 c.Assert(err, IsNil) 40 c.Assert(task2InEtcd, IsNil) 41 42 tasks, err := GetAllOpenAPITaskTemplate(etcdTestCli) 43 c.Assert(err, IsNil) 44 c.Assert(tasks, HasLen, 0) 45 46 // put openapi task config . 47 c.Assert(PutOpenAPITaskTemplate(etcdTestCli, task1, false), IsNil) 48 c.Assert(PutOpenAPITaskTemplate(etcdTestCli, task2, false), IsNil) 49 50 task1InEtcd, err = GetOpenAPITaskTemplate(etcdTestCli, task1.Name) 51 c.Assert(err, IsNil) 52 c.Assert(*task1InEtcd, DeepEquals, task1) 53 54 task2InEtcd, err = GetOpenAPITaskTemplate(etcdTestCli, task2.Name) 55 c.Assert(err, IsNil) 56 c.Assert(*task2InEtcd, DeepEquals, task2) 57 58 tasks, err = GetAllOpenAPITaskTemplate(etcdTestCli) 59 c.Assert(err, IsNil) 60 c.Assert(tasks, HasLen, 2) 61 62 // put openapi task config again without overwrite will fail 63 c.Assert(terror.ErrOpenAPITaskConfigExist.Equal(PutOpenAPITaskTemplate(etcdTestCli, task1, false)), IsTrue) 64 65 // in overwrite mode, it will overwrite the old one. 66 task1.TaskMode = openapi.TaskTaskModeFull 67 c.Assert(PutOpenAPITaskTemplate(etcdTestCli, task1, true), IsNil) 68 task1InEtcd, err = GetOpenAPITaskTemplate(etcdTestCli, task1.Name) 69 c.Assert(err, IsNil) 70 c.Assert(*task1InEtcd, DeepEquals, task1) 71 72 // put task config that not exist will fail 73 task3, err := fixtures.GenNoShardOpenAPITaskForTest() 74 c.Assert(err, IsNil) 75 task3.Name = "test-3" 76 c.Assert(terror.ErrOpenAPITaskConfigNotExist.Equal(UpdateOpenAPITaskTemplate(etcdTestCli, task3)), IsTrue) 77 78 // update exist openapi task config will success 79 task1.TaskMode = openapi.TaskTaskModeAll 80 c.Assert(UpdateOpenAPITaskTemplate(etcdTestCli, task1), IsNil) 81 task1InEtcd, err = GetOpenAPITaskTemplate(etcdTestCli, task1.Name) 82 c.Assert(err, IsNil) 83 c.Assert(*task1InEtcd, DeepEquals, task1) 84 85 // delete task config 86 c.Assert(DeleteOpenAPITaskTemplate(etcdTestCli, task1.Name), IsNil) 87 tasks, err = GetAllOpenAPITaskTemplate(etcdTestCli) 88 c.Assert(err, IsNil) 89 c.Assert(tasks, HasLen, 1) 90 }