github.com/pingcap/tiflow@v0.0.0-20240520035814-5bf52d54e205/dm/pkg/ha/worker_test.go (about)

     1  // Copyright 2020 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  )
    19  
    20  func (t *testForEtcd) TestWorkerInfoJSON(c *C) {
    21  	i1 := NewWorkerInfo("dm-worker-1", "192.168.0.100:8262")
    22  
    23  	j, err := i1.toJSON()
    24  	c.Assert(err, IsNil)
    25  	c.Assert(j, Equals, `{"name":"dm-worker-1","addr":"192.168.0.100:8262"}`)
    26  	c.Assert(j, Equals, i1.String())
    27  
    28  	i2, err := workerInfoFromJSON(j)
    29  	c.Assert(err, IsNil)
    30  	c.Assert(i2, DeepEquals, i1)
    31  }
    32  
    33  func (t *testForEtcd) TestWorkerInfoEtcd(c *C) {
    34  	defer clearTestInfoOperation(c)
    35  
    36  	var (
    37  		worker1 = "dm-worker-1"
    38  		worker2 = "dm-worker-2"
    39  		info1   = NewWorkerInfo(worker1, "192.168.0.100:8262")
    40  		info2   = NewWorkerInfo(worker2, "192.168.0.101:8262")
    41  	)
    42  
    43  	// get without info.
    44  	ifm, _, err := GetAllWorkerInfo(etcdTestCli)
    45  	c.Assert(err, IsNil)
    46  	c.Assert(ifm, HasLen, 0)
    47  
    48  	// put two info.
    49  	rev1, err := PutWorkerInfo(etcdTestCli, info1)
    50  	c.Assert(err, IsNil)
    51  	c.Assert(rev1, Greater, int64(0))
    52  	rev2, err := PutWorkerInfo(etcdTestCli, info2)
    53  	c.Assert(err, IsNil)
    54  	c.Assert(rev2, Greater, rev1)
    55  
    56  	// get again, with two info.
    57  	ifm, rev3, err := GetAllWorkerInfo(etcdTestCli)
    58  	c.Assert(err, IsNil)
    59  	c.Assert(rev3, Equals, rev2)
    60  	c.Assert(ifm, HasLen, 2)
    61  	c.Assert(ifm[worker1], DeepEquals, info1)
    62  	c.Assert(ifm[worker2], DeepEquals, info2)
    63  
    64  	// delete info1.
    65  	rev4, err := DeleteWorkerInfoRelayConfig(etcdTestCli, worker1)
    66  	c.Assert(err, IsNil)
    67  	c.Assert(rev4, Greater, rev3)
    68  
    69  	// get again, with only one info.
    70  	ifm, rev5, err := GetAllWorkerInfo(etcdTestCli)
    71  	c.Assert(err, IsNil)
    72  	c.Assert(rev5, Equals, rev4)
    73  	c.Assert(ifm, HasLen, 1)
    74  	c.Assert(ifm[worker2], DeepEquals, info2)
    75  }