@@ -4,11 +4,6 @@ use crate::LogId;
4
4
5
5
#[ test]
6
6
fn test_log_id_list_extend_from_same_leader ( ) -> anyhow:: Result < ( ) > {
7
- let log_id = |t, i| LogId :: < u64 > {
8
- leader_id : LeaderId { term : t, node_id : 1 } ,
9
- index : i,
10
- } ;
11
-
12
7
let mut ids = LogIdList :: < u64 > :: default ( ) ;
13
8
14
9
// Extend one log id to an empty LogIdList: Just store it directly
@@ -55,11 +50,6 @@ fn test_log_id_list_extend_from_same_leader() -> anyhow::Result<()> {
55
50
56
51
#[ test]
57
52
fn test_log_id_list_append ( ) -> anyhow:: Result < ( ) > {
58
- let log_id = |t, i| LogId :: < u64 > {
59
- leader_id : LeaderId { term : t, node_id : 1 } ,
60
- index : i,
61
- } ;
62
-
63
53
let mut ids = LogIdList :: < u64 > :: default ( ) ;
64
54
65
55
// Append log id one by one, check the internally constructed `key_log_id` as expected.
@@ -82,12 +72,71 @@ fn test_log_id_list_append() -> anyhow::Result<()> {
82
72
}
83
73
84
74
#[ test]
85
- fn test_log_id_list_get_log_id ( ) -> anyhow:: Result < ( ) > {
86
- let log_id = |t, i| LogId :: < u64 > {
87
- leader_id : LeaderId { term : t, node_id : 1 } ,
88
- index : i,
89
- } ;
75
+ fn test_log_id_list_purge ( ) -> anyhow:: Result < ( ) > {
76
+ // Append log id one by one, check the internally constructed `key_log_id` as expected.
77
+
78
+ let cases = vec ! [
79
+ //
80
+ ( log_id( 2 , 1 ) , vec![
81
+ log_id( 2 , 2 ) ,
82
+ log_id( 3 , 3 ) ,
83
+ log_id( 6 , 6 ) ,
84
+ log_id( 9 , 9 ) ,
85
+ log_id( 9 , 11 ) ,
86
+ ] ) ,
87
+ ( log_id( 2 , 2 ) , vec![
88
+ log_id( 2 , 2 ) ,
89
+ log_id( 3 , 3 ) ,
90
+ log_id( 6 , 6 ) ,
91
+ log_id( 9 , 9 ) ,
92
+ log_id( 9 , 11 ) ,
93
+ ] ) ,
94
+ ( log_id( 3 , 3 ) , vec![
95
+ log_id( 3 , 3 ) ,
96
+ log_id( 6 , 6 ) ,
97
+ log_id( 9 , 9 ) ,
98
+ log_id( 9 , 11 ) ,
99
+ ] ) ,
100
+ ( log_id( 3 , 4 ) , vec![
101
+ log_id( 3 , 4 ) ,
102
+ log_id( 6 , 6 ) ,
103
+ log_id( 9 , 9 ) ,
104
+ log_id( 9 , 11 ) ,
105
+ ] ) ,
106
+ ( log_id( 3 , 5 ) , vec![
107
+ log_id( 3 , 5 ) ,
108
+ log_id( 6 , 6 ) ,
109
+ log_id( 9 , 9 ) ,
110
+ log_id( 9 , 11 ) ,
111
+ ] ) ,
112
+ ( log_id( 6 , 6 ) , vec![ log_id( 6 , 6 ) , log_id( 9 , 9 ) , log_id( 9 , 11 ) ] ) ,
113
+ ( log_id( 6 , 7 ) , vec![ log_id( 6 , 7 ) , log_id( 9 , 9 ) , log_id( 9 , 11 ) ] ) ,
114
+ ( log_id( 6 , 8 ) , vec![ log_id( 6 , 8 ) , log_id( 9 , 9 ) , log_id( 9 , 11 ) ] ) ,
115
+ ( log_id( 9 , 9 ) , vec![ log_id( 9 , 9 ) , log_id( 9 , 11 ) ] ) ,
116
+ ( log_id( 9 , 10 ) , vec![ log_id( 9 , 10 ) , log_id( 9 , 11 ) ] ) ,
117
+ ( log_id( 9 , 11 ) , vec![ log_id( 9 , 11 ) ] ) ,
118
+ ( log_id( 9 , 12 ) , vec![ log_id( 9 , 12 ) ] ) ,
119
+ ( log_id( 10 , 12 ) , vec![ log_id( 10 , 12 ) ] ) ,
120
+ ] ;
121
+
122
+ for ( upto, want) in cases {
123
+ let mut ids = LogIdList :: < u64 > :: new ( vec ! [
124
+ log_id( 2 , 2 ) , // force multi line
125
+ log_id( 3 , 3 ) ,
126
+ log_id( 6 , 6 ) ,
127
+ log_id( 9 , 9 ) ,
128
+ log_id( 9 , 11 ) ,
129
+ ] ) ;
130
+
131
+ ids. purge ( & upto) ;
132
+ assert_eq ! ( want, ids. key_log_ids( ) , "purge upto: {}" , upto) ;
133
+ }
134
+
135
+ Ok ( ( ) )
136
+ }
90
137
138
+ #[ test]
139
+ fn test_log_id_list_get_log_id ( ) -> anyhow:: Result < ( ) > {
91
140
// Get log id from empty list always returns `None`.
92
141
93
142
let ids = LogIdList :: < u64 > :: default ( ) ;
@@ -122,3 +171,9 @@ fn test_log_id_list_get_log_id() -> anyhow::Result<()> {
122
171
123
172
Ok ( ( ) )
124
173
}
174
+ fn log_id ( term : u64 , index : u64 ) -> LogId < u64 > {
175
+ LogId :: < u64 > {
176
+ leader_id : LeaderId { term, node_id : 1 } ,
177
+ index,
178
+ }
179
+ }
0 commit comments