Skip to content

Commit

Permalink
feat: change new probes return
Browse files Browse the repository at this point in the history
Signed-off-by: XZ <834756128@qq.com>
  • Loading branch information
fcgxz2003 committed May 24, 2023
1 parent 313be1b commit 93e8636
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 63 deletions.
12 changes: 4 additions & 8 deletions scheduler/networktopology/network_topology.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,24 +157,20 @@ func (n *networkTopology) DeleteHost(hostID string) error {

// StoreProbe stores probe between two hosts.
func (n *networkTopology) StoreProbe(src, dest string, probe *Probe) bool {
probes, err := NewProbes(n.rdb, n.config.NetworkTopology.Probe.QueueLength, src, dest)
if err != nil {
return false
}

if err = probes.Enqueue(probe); err != nil {
probes := NewProbes(n.rdb, n.config.NetworkTopology.Probe.QueueLength, src, dest)
if err := probes.Enqueue(probe); err != nil {
return false
}

// Update probe count.
key := fmt.Sprintf("probe-count:%s", src)
if err = n.rdb.Incr(context.Background(), key).Err(); err != nil {
if err := n.rdb.Incr(context.Background(), key).Err(); err != nil {
return false
}

// Update probed count.
key = fmt.Sprintf("probed-count:%s", dest)
if err = n.rdb.Incr(context.Background(), key).Err(); err != nil {
if err := n.rdb.Incr(context.Background(), key).Err(); err != nil {
return false
}

Expand Down
4 changes: 2 additions & 2 deletions scheduler/networktopology/probes.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,13 @@ type probes struct {
}

// NewProbes creates a probes interface.
func NewProbes(rdb redis.UniversalClient, limit int, src string, dest string) (Probes, error) {
func NewProbes(rdb redis.UniversalClient, limit int, src string, dest string) Probes {
return &probes{
rdb: rdb,
limit: limit,
src: src,
dest: dest,
}, nil
}
}

// Peek returns the oldest probe without removing it.
Expand Down
85 changes: 32 additions & 53 deletions scheduler/networktopology/probes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,11 +157,11 @@ func Test_NewProbe(t *testing.T) {
func Test_NewProbes(t *testing.T) {
tests := []struct {
name string
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "new probes",
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
probes := p.(*probes)
assert.NotNil(probes.rdb)
Expand All @@ -174,8 +174,7 @@ func Test_NewProbes(t *testing.T) {
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
rdb, _ := redismock.NewClientMock()
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
})
}
}
Expand All @@ -184,7 +183,7 @@ func TestProbes_Peek(t *testing.T) {
tests := []struct {
name string
mock func(clientMock redismock.ClientMock)
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "queue has one probe",
Expand All @@ -199,9 +198,8 @@ func TestProbes_Peek(t *testing.T) {
clientMock.ExpectLIndex(key, 0).SetVal(string(data))
clientMock.ExpectLLen(key).SetVal(1)
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
a := assert.New(t)
a.Nil(err)
probe, peeked := p.Peek()
assert.ObjectsAreEqualValues(probe, mockProbe)
a.True(peeked)
Expand All @@ -216,9 +214,8 @@ func TestProbes_Peek(t *testing.T) {
clientMock.ExpectLIndex(key, 0).SetErr(errors.New("no probe"))
clientMock.ExpectLLen(key).SetVal(0)
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
_, peeked := p.Peek()
assert.False(peeked)
assert.Equal(p.Length(), int64(0))
Expand All @@ -232,8 +229,7 @@ func TestProbes_Peek(t *testing.T) {

rdb, clientMock := redismock.NewClientMock()
tc.mock(clientMock)
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
clientMock.ClearExpect()
})
}
Expand All @@ -243,7 +239,7 @@ func TestProbes_Enqueue(t *testing.T) {
tests := []struct {
name string
mock func(clientMock redismock.ClientMock)
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "enqueue one probe when probes queue is null",
Expand All @@ -264,10 +260,9 @@ func TestProbes_Enqueue(t *testing.T) {
clientMock.ExpectHSet(networkTopologyKey, "createdAt", mockProbe.CreatedAt.UnixNano()).SetVal(1)
clientMock.ExpectHSet(networkTopologyKey, "updatedAt", mockProbe.CreatedAt.UnixNano()).SetVal(1)
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
a := assert.New(t)
a.Nil(err)
err = p.Enqueue(mockProbe)
err := p.Enqueue(mockProbe)
a.Nil(err)
},
},
Expand Down Expand Up @@ -295,10 +290,9 @@ func TestProbes_Enqueue(t *testing.T) {
clientMock.ExpectHSet(networkTopologyKey, "averageRTT", int64(2979000)).SetVal(1)
clientMock.ExpectHSet(networkTopologyKey, "updatedAt", mockProbe.CreatedAt.UnixNano()).SetVal(1)
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
a := assert.New(t)
a.Nil(err)
err = p.Enqueue(mockProbe)
err := p.Enqueue(mockProbe)
a.Nil(err)
},
},
Expand All @@ -310,8 +304,7 @@ func TestProbes_Enqueue(t *testing.T) {

rdb, clientMock := redismock.NewClientMock()
tc.mock(clientMock)
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
clientMock.ClearExpect()
})
}
Expand All @@ -321,7 +314,7 @@ func TestProbes_Dequeue(t *testing.T) {
tests := []struct {
name string
mock func(clientMock redismock.ClientMock)
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "dequeue probe",
Expand All @@ -337,9 +330,8 @@ func TestProbes_Dequeue(t *testing.T) {
clientMock.ExpectLIndex(key, 0).RedisNil()
clientMock.ExpectLLen(key).SetVal(0)
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
a := assert.New(t)
a.Nil(err)
probe, ok := p.Dequeue()
assert.ObjectsAreEqualValues(probe, mockProbe)
a.True(ok)
Expand All @@ -358,9 +350,8 @@ func TestProbes_Dequeue(t *testing.T) {
clientMock.ExpectLIndex(key, 0).RedisNil()
clientMock.ExpectLLen(key).SetVal(0)
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
_, ok := p.Dequeue()
assert.False(ok)

Expand All @@ -377,8 +368,7 @@ func TestProbes_Dequeue(t *testing.T) {

rdb, clientMock := redismock.NewClientMock()
tc.mock(clientMock)
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
clientMock.ClearExpect()
})
}
Expand All @@ -388,17 +378,16 @@ func TestProbes_Length(t *testing.T) {
tests := []struct {
name string
mock func(clientMock redismock.ClientMock)
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "queue has one probe",
mock: func(clientMock redismock.ClientMock) {
key := fmt.Sprintf("probes:%s:%s", mockSeedHost.ID, mockHost.ID)
clientMock.ExpectLLen(key).SetVal(1)
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
assert.Equal(p.Length(), int64(1))
},
},
Expand All @@ -410,8 +399,7 @@ func TestProbes_Length(t *testing.T) {

rdb, clientMock := redismock.NewClientMock()
tc.mock(clientMock)
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
clientMock.ClearExpect()
})
}
Expand All @@ -421,17 +409,16 @@ func TestProbes_CreatedAt(t *testing.T) {
tests := []struct {
name string
mock func(clientMock redismock.ClientMock)
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "get creation time of probes",
mock: func(clientMock redismock.ClientMock) {
key := fmt.Sprintf("network-topology:%s:%s", mockSeedHost.ID, mockHost.ID)
clientMock.ExpectHGet(key, "createdAt").SetVal(strconv.FormatInt(mockProbe.CreatedAt.UnixNano(), 10))
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
assert.Equal(p.CreatedAt().UnixNano(), mockProbe.CreatedAt.UnixNano())
},
},
Expand All @@ -441,9 +428,8 @@ func TestProbes_CreatedAt(t *testing.T) {
key := fmt.Sprintf("network-topology:%s:%s", mockSeedHost.ID, mockHost.ID)
clientMock.ExpectHGet(key, "createdAt").SetErr(errors.New("probes do not exist"))
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
assert.Equal(p.CreatedAt(), time.Time{})
},
},
Expand All @@ -455,8 +441,7 @@ func TestProbes_CreatedAt(t *testing.T) {

rdb, clientMock := redismock.NewClientMock()
tc.mock(clientMock)
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
clientMock.ClearExpect()
})
}
Expand All @@ -466,7 +451,7 @@ func TestProbes_UpdatedAt(t *testing.T) {
tests := []struct {
name string
mock func(clientMock redismock.ClientMock)
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "get update time of probes",
Expand All @@ -475,9 +460,8 @@ func TestProbes_UpdatedAt(t *testing.T) {
fmt.Println(mockHost.CreatedAt.Load().Nanosecond())
clientMock.ExpectHGet(key, "updatedAt").SetVal(strconv.FormatInt(mockProbe.CreatedAt.UnixNano(), 10))
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
assert.Equal(p.UpdatedAt().UnixNano(), mockProbe.CreatedAt.UnixNano())
},
},
Expand All @@ -487,9 +471,8 @@ func TestProbes_UpdatedAt(t *testing.T) {
key := fmt.Sprintf("network-topology:%s:%s", mockSeedHost.ID, mockHost.ID)
clientMock.ExpectHGet(key, "updatedAt").SetErr(errors.New("probes do not exist"))
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
assert.Equal(p.UpdatedAt(), time.Time{})
},
},
Expand All @@ -501,8 +484,7 @@ func TestProbes_UpdatedAt(t *testing.T) {

rdb, clientMock := redismock.NewClientMock()
tc.mock(clientMock)
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
clientMock.ClearExpect()
})
}
Expand All @@ -512,17 +494,16 @@ func TestProbes_AverageRTT(t *testing.T) {
tests := []struct {
name string
mock func(clientMock redismock.ClientMock)
expect func(t *testing.T, p Probes, err error)
expect func(t *testing.T, p Probes)
}{
{
name: "get averageRTT of probes",
mock: func(clientMock redismock.ClientMock) {
key := fmt.Sprintf("network-topology:%s:%s", mockSeedHost.ID, mockHost.ID)
clientMock.ExpectHGet(key, "averageRTT").SetVal(strconv.FormatInt(mockProbe.RTT.Nanoseconds(), 10))
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
assert.Equal(p.AverageRTT(), mockProbe.RTT)
},
},
Expand All @@ -532,9 +513,8 @@ func TestProbes_AverageRTT(t *testing.T) {
key := fmt.Sprintf("network-topology:%s:%s", mockSeedHost.ID, mockHost.ID)
clientMock.ExpectHGet(key, "averageRTT").SetErr(errors.New("probes do not exist"))
},
expect: func(t *testing.T, p Probes, err error) {
expect: func(t *testing.T, p Probes) {
assert := assert.New(t)
assert.Nil(err)
assert.Equal(p.AverageRTT(), time.Duration(0))
},
},
Expand All @@ -546,8 +526,7 @@ func TestProbes_AverageRTT(t *testing.T) {

rdb, clientMock := redismock.NewClientMock()
tc.mock(clientMock)
p, err := NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID)
tc.expect(t, p, err)
tc.expect(t, NewProbes(rdb, mockQueueLength, mockSeedHost.ID, mockHost.ID))
clientMock.ClearExpect()
})
}
Expand Down

0 comments on commit 93e8636

Please sign in to comment.