22
22
import com .ctrip .framework .apollo .biz .entity .ReleaseHistory ;
23
23
import com .ctrip .framework .apollo .common .constants .NamespaceBranchStatus ;
24
24
import com .ctrip .framework .apollo .common .constants .ReleaseOperation ;
25
+ import com .ctrip .framework .apollo .common .utils .GrayReleaseRuleItemTransformer ;
26
+ import com .ctrip .framework .apollo .common .dto .GrayReleaseRuleItemDTO ;
27
+ import java .util .Set ;
25
28
26
29
import org .junit .Assert ;
27
30
import org .junit .Test ;
@@ -64,32 +67,25 @@ public void testUpdateBranchGrayRulesWithUpdateOnce() {
64
67
65
68
namespaceBranchService .updateBranchGrayRules (testApp , testCluster , testNamespace , testBranchName , rule );
66
69
67
- GrayReleaseRule activeRule = namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace ,
68
- testBranchName );
70
+ GrayReleaseRule
71
+ activeRule =
72
+ namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace , testBranchName );
69
73
70
74
Assert .assertNotNull (activeRule );
71
75
Assert .assertEquals (rule .getAppId (), activeRule .getAppId ());
72
76
Assert .assertEquals (rule .getRules (), activeRule .getRules ());
73
77
Assert .assertEquals (Long .valueOf (0 ), activeRule .getReleaseId ());
74
78
75
- Page <ReleaseHistory > releaseHistories = releaseHistoryService .findReleaseHistoriesByNamespace ( testApp , testCluster ,
76
- testNamespace , pageable );
79
+ Page <ReleaseHistory > releaseHistories = releaseHistoryService .findReleaseHistoriesByNamespace
80
+ ( testApp , testCluster , testNamespace , pageable );
77
81
78
82
ReleaseHistory releaseHistory = releaseHistories .getContent ().get (0 );
79
83
80
84
Assert .assertEquals (1 , releaseHistories .getTotalElements ());
81
85
Assert .assertEquals (ReleaseOperation .APPLY_GRAY_RULES , releaseHistory .getOperation ());
82
86
Assert .assertEquals (0 , releaseHistory .getReleaseId ());
83
87
Assert .assertEquals (0 , releaseHistory .getPreviousReleaseId ());
84
- Assert .assertTrue (containRule (releaseHistory .getOperationContext (), rule .getRules ()));
85
- }
86
-
87
- private boolean containRule (String context , String rule ) {
88
- String [] rules = rule .substring (2 , rule .length () - 2 ).split ("," );
89
- for (int i = 0 ; i < rules .length ; i ++)
90
- if (!context .contains (rules [i ]))
91
- return false ;
92
- return true ;
88
+ Assert .assertTrue (containRule (releaseHistory .getOperationContext (),rule .getRules ()));
93
89
}
94
90
95
91
@ Test
@@ -101,31 +97,37 @@ public void testUpdateBranchGrayRulesWithUpdateTwice() {
101
97
namespaceBranchService .updateBranchGrayRules (testApp , testCluster , testNamespace , testBranchName , firstRule );
102
98
103
99
GrayReleaseRule secondRule = instanceGrayReleaseRule ();
104
- secondRule .setRules (
105
- "[{\" clientAppId\" :\" branch-test\" ,\" clientIpList\" :[\" 10.38.57.112\" ],\" clientLabelList\" :[\" branch-test\" ]}]" );
100
+ secondRule .setRules ("[{\" clientAppId\" :\" branch-test\" ,\" clientIpList\" :[\" 10.38.57.112\" ],\" clientLabelList\" :[\" branch-test\" ]}]" );
106
101
namespaceBranchService .updateBranchGrayRules (testApp , testCluster , testNamespace , testBranchName , secondRule );
107
102
108
- GrayReleaseRule activeRule = namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace ,
109
- testBranchName );
103
+ GrayReleaseRule
104
+ activeRule =
105
+ namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace , testBranchName );
110
106
111
107
Assert .assertNotNull (secondRule );
112
108
Assert .assertEquals (secondRule .getAppId (), activeRule .getAppId ());
113
109
Assert .assertEquals (secondRule .getRules (), activeRule .getRules ());
114
110
Assert .assertEquals (Long .valueOf (0 ), activeRule .getReleaseId ());
115
111
116
- Page <ReleaseHistory > releaseHistories = releaseHistoryService .findReleaseHistoriesByNamespace ( testApp , testCluster ,
117
- testNamespace , pageable );
112
+ Page <ReleaseHistory > releaseHistories = releaseHistoryService .findReleaseHistoriesByNamespace
113
+ ( testApp , testCluster , testNamespace , pageable );
118
114
119
115
ReleaseHistory firstReleaseHistory = releaseHistories .getContent ().get (1 );
120
116
ReleaseHistory secondReleaseHistory = releaseHistories .getContent ().get (0 );
121
117
122
118
Assert .assertEquals (2 , releaseHistories .getTotalElements ());
123
119
Assert .assertEquals (ReleaseOperation .APPLY_GRAY_RULES , firstReleaseHistory .getOperation ());
124
120
Assert .assertEquals (ReleaseOperation .APPLY_GRAY_RULES , secondReleaseHistory .getOperation ());
125
- Assert .assertTrue (firstReleaseHistory .getOperationContext ().contains (firstRule .getRules ()));
126
- Assert .assertFalse (firstReleaseHistory .getOperationContext ().contains (secondRule .getRules ()));
127
- Assert .assertTrue (secondReleaseHistory .getOperationContext ().contains (firstRule .getRules ()));
128
- Assert .assertTrue (secondReleaseHistory .getOperationContext ().contains (secondRule .getRules ()));
121
+ Assert .assertTrue (containRule (firstReleaseHistory .getOperationContext (),firstRule .getRules ()));
122
+ Assert .assertFalse (containRule (firstReleaseHistory .getOperationContext (),secondRule .getRules ()));
123
+ Assert .assertTrue (containRule (secondReleaseHistory .getOperationContext (),firstRule .getRules ()));
124
+ Assert .assertTrue (containRule (secondReleaseHistory .getOperationContext (),secondRule .getRules ()));
125
+ }
126
+
127
+ private boolean containRule (String context , String rule ){
128
+ Set <GrayReleaseRuleItemDTO > contextRules = GrayReleaseRuleItemTransformer .batchTransformFromJSON (context .substring (context .indexOf ("[" ),context .lastIndexOf ("]" )+1 ));
129
+ Set <GrayReleaseRuleItemDTO > rules = GrayReleaseRuleItemTransformer .batchTransformFromJSON (rule );
130
+ return contextRules .iterator ().next ().toString ().equals (rules .iterator ().next ().toString ());
129
131
}
130
132
131
133
@ Test
@@ -137,8 +139,9 @@ public void testUpdateRulesReleaseIdWithOldRuleNotExist() {
137
139
namespaceBranchService
138
140
.updateRulesReleaseId (testApp , testCluster , testNamespace , testBranchName , latestReleaseId , operator );
139
141
140
- GrayReleaseRule activeRule = namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace ,
141
- testBranchName );
142
+ GrayReleaseRule
143
+ activeRule =
144
+ namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace , testBranchName );
142
145
143
146
Assert .assertNull (activeRule );
144
147
}
@@ -156,15 +159,17 @@ public void testUpdateRulesReleaseIdWithOldRuleExist() {
156
159
namespaceBranchService
157
160
.updateRulesReleaseId (testApp , testCluster , testNamespace , testBranchName , latestReleaseId , operator );
158
161
159
- GrayReleaseRule activeRule = namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace ,
160
- testBranchName );
162
+ GrayReleaseRule
163
+ activeRule =
164
+ namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace , testBranchName );
161
165
162
166
Assert .assertNotNull (activeRule );
163
167
Assert .assertEquals (Long .valueOf (latestReleaseId ), activeRule .getReleaseId ());
164
168
Assert .assertEquals (rule .getRules (), activeRule .getRules ());
165
169
Assert .assertEquals (NamespaceBranchStatus .ACTIVE , activeRule .getBranchStatus ());
166
170
}
167
171
172
+
168
173
@ Test
169
174
@ Sql (scripts = "/sql/namespace-branch-test.sql" , executionPhase = Sql .ExecutionPhase .BEFORE_TEST_METHOD )
170
175
@ Sql (scripts = "/sql/clean.sql" , executionPhase = Sql .ExecutionPhase .AFTER_TEST_METHOD )
@@ -173,21 +178,19 @@ public void testDeleteBranch() {
173
178
GrayReleaseRule rule = instanceGrayReleaseRule ();
174
179
namespaceBranchService .updateBranchGrayRules (testApp , testCluster , testNamespace , testBranchName , rule );
175
180
176
- namespaceBranchService .deleteBranch (testApp , testCluster , testNamespace , testBranchName ,
177
- NamespaceBranchStatus .DELETED , operator );
181
+ namespaceBranchService .deleteBranch (testApp , testCluster , testNamespace , testBranchName , NamespaceBranchStatus .DELETED , operator );
178
182
179
183
Namespace branch = namespaceBranchService .findBranch (testApp , testCluster , testNamespace );
180
184
Assert .assertNull (branch );
181
185
182
- GrayReleaseRule latestRule = namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace ,
183
- testBranchName );
186
+ GrayReleaseRule latestRule = namespaceBranchService .findBranchGrayRules (testApp , testCluster , testNamespace , testBranchName );
184
187
185
188
Assert .assertNotNull (latestRule );
186
189
Assert .assertEquals (NamespaceBranchStatus .DELETED , latestRule .getBranchStatus ());
187
190
Assert .assertEquals ("[]" , latestRule .getRules ());
188
191
189
- Page <ReleaseHistory > releaseHistories = releaseHistoryService .findReleaseHistoriesByNamespace ( testApp , testCluster ,
190
- testNamespace , pageable );
192
+ Page <ReleaseHistory > releaseHistories = releaseHistoryService .findReleaseHistoriesByNamespace
193
+ ( testApp , testCluster , testNamespace , pageable );
191
194
192
195
ReleaseHistory firstReleaseHistory = releaseHistories .getContent ().get (1 );
193
196
ReleaseHistory secondReleaseHistory = releaseHistories .getContent ().get (0 );
@@ -198,6 +201,7 @@ public void testDeleteBranch() {
198
201
199
202
}
200
203
204
+
201
205
private GrayReleaseRule instanceGrayReleaseRule () {
202
206
GrayReleaseRule rule = new GrayReleaseRule ();
203
207
rule .setAppId (testApp );
@@ -209,4 +213,5 @@ private GrayReleaseRule instanceGrayReleaseRule() {
209
213
return rule ;
210
214
}
211
215
216
+
212
217
}
0 commit comments