29
29
import org .elasticsearch .common .Table ;
30
30
import org .elasticsearch .common .settings .Settings ;
31
31
import org .elasticsearch .common .unit .TimeValue ;
32
+ import org .elasticsearch .common .xcontent .XContentElasticsearchExtension ;
32
33
import org .elasticsearch .index .Index ;
33
34
import org .elasticsearch .index .shard .ShardId ;
34
35
import org .elasticsearch .indices .recovery .RecoveryState ;
37
38
import org .elasticsearch .usage .UsageService ;
38
39
39
40
import java .util .ArrayList ;
41
+ import java .util .Arrays ;
40
42
import java .util .Collections ;
43
+ import java .util .Date ;
41
44
import java .util .HashMap ;
42
45
import java .util .List ;
43
46
import java .util .Locale ;
@@ -53,7 +56,7 @@ public void testRestRecoveryAction() {
53
56
final Settings settings = Settings .EMPTY ;
54
57
UsageService usageService = new UsageService ();
55
58
final RestController restController = new RestController (Collections .emptySet (), null , null , null , usageService );
56
- final RestRecoveryAction action = new RestRecoveryAction (settings , restController );
59
+ final RestCatRecoveryAction action = new RestCatRecoveryAction (settings , restController );
57
60
final int totalShards = randomIntBetween (1 , 32 );
58
61
final int successfulShards = Math .max (0 , totalShards - randomIntBetween (1 , 2 ));
59
62
final int failedShards = totalShards - successfulShards ;
@@ -64,7 +67,11 @@ public void testRestRecoveryAction() {
64
67
final RecoveryState state = mock (RecoveryState .class );
65
68
when (state .getShardId ()).thenReturn (new ShardId (new Index ("index" , "_na_" ), i ));
66
69
final RecoveryState .Timer timer = mock (RecoveryState .Timer .class );
67
- when (timer .time ()).thenReturn ((long )randomIntBetween (1000000 , 10 * 1000000 ));
70
+ final long startTime = randomLongBetween (0 , new Date ().getTime ());
71
+ when (timer .startTime ()).thenReturn (startTime );
72
+ final long time = randomLongBetween (1000000 , 10 * 1000000 );
73
+ when (timer .time ()).thenReturn (time );
74
+ when (timer .stopTime ()).thenReturn (startTime + time );
68
75
when (state .getTimer ()).thenReturn (timer );
69
76
when (state .getRecoverySource ()).thenReturn (TestShardRouting .randomRecoverySource ());
70
77
when (state .getStage ()).thenReturn (randomFrom (RecoveryState .Stage .values ()));
@@ -122,63 +129,78 @@ public void testRestRecoveryAction() {
122
129
123
130
List <Table .Cell > headers = table .getHeaders ();
124
131
125
- assertThat (headers .get (0 ).value , equalTo ("index" ));
126
- assertThat (headers .get (1 ).value , equalTo ("shard" ));
127
- assertThat (headers .get (2 ).value , equalTo ("time" ));
128
- assertThat (headers .get (3 ).value , equalTo ("type" ));
129
- assertThat (headers .get (4 ).value , equalTo ("stage" ));
130
- assertThat (headers .get (5 ).value , equalTo ("source_host" ));
131
- assertThat (headers .get (6 ).value , equalTo ("source_node" ));
132
- assertThat (headers .get (7 ).value , equalTo ("target_host" ));
133
- assertThat (headers .get (8 ).value , equalTo ("target_node" ));
134
- assertThat (headers .get (9 ).value , equalTo ("repository" ));
135
- assertThat (headers .get (10 ).value , equalTo ("snapshot" ));
136
- assertThat (headers .get (11 ).value , equalTo ("files" ));
137
- assertThat (headers .get (12 ).value , equalTo ("files_recovered" ));
138
- assertThat (headers .get (13 ).value , equalTo ("files_percent" ));
139
- assertThat (headers .get (14 ).value , equalTo ("files_total" ));
140
- assertThat (headers .get (15 ).value , equalTo ("bytes" ));
141
- assertThat (headers .get (16 ).value , equalTo ("bytes_recovered" ));
142
- assertThat (headers .get (17 ).value , equalTo ("bytes_percent" ));
143
- assertThat (headers .get (18 ).value , equalTo ("bytes_total" ));
144
- assertThat (headers .get (19 ).value , equalTo ("translog_ops" ));
145
- assertThat (headers .get (20 ).value , equalTo ("translog_ops_recovered" ));
146
- assertThat (headers .get (21 ).value , equalTo ("translog_ops_percent" ));
132
+ final List <String > expectedHeaders = Arrays .asList (
133
+ "index" ,
134
+ "shard" ,
135
+ "start_time" ,
136
+ "start_time_millis" ,
137
+ "stop_time" ,
138
+ "stop_time_millis" ,
139
+ "time" ,
140
+ "type" ,
141
+ "stage" ,
142
+ "source_host" ,
143
+ "source_node" ,
144
+ "target_host" ,
145
+ "target_node" ,
146
+ "repository" ,
147
+ "snapshot" ,
148
+ "files" ,
149
+ "files_recovered" ,
150
+ "files_percent" ,
151
+ "files_total" ,
152
+ "bytes" ,
153
+ "bytes_recovered" ,
154
+ "bytes_percent" ,
155
+ "bytes_total" ,
156
+ "translog_ops" ,
157
+ "translog_ops_recovered" ,
158
+ "translog_ops_percent" );
159
+
160
+ for (int i = 0 ; i < expectedHeaders .size (); i ++) {
161
+ assertThat (headers .get (i ).value , equalTo (expectedHeaders .get (i )));
162
+ }
147
163
148
164
assertThat (table .getRows ().size (), equalTo (successfulShards ));
165
+
149
166
for (int i = 0 ; i < successfulShards ; i ++) {
150
167
final RecoveryState state = recoveryStates .get (i );
151
- List <Table .Cell > cells = table .getRows ().get (i );
152
- assertThat (cells .get (0 ).value , equalTo ("index" ));
153
- assertThat (cells .get (1 ).value , equalTo (i ));
154
- assertThat (cells .get (2 ).value , equalTo (new TimeValue (state .getTimer ().time ())));
155
- assertThat (cells .get (3 ).value , equalTo (state .getRecoverySource ().getType ().name ().toLowerCase (Locale .ROOT )));
156
- assertThat (cells .get (4 ).value , equalTo (state .getStage ().name ().toLowerCase (Locale .ROOT )));
157
- assertThat (cells .get (5 ).value , equalTo (state .getSourceNode () == null ? "n/a" : state .getSourceNode ().getHostName ()));
158
- assertThat (cells .get (6 ).value , equalTo (state .getSourceNode () == null ? "n/a" : state .getSourceNode ().getName ()));
159
- assertThat (cells .get (7 ).value , equalTo (state .getTargetNode ().getHostName ()));
160
- assertThat (cells .get (8 ).value , equalTo (state .getTargetNode ().getName ()));
161
- assertThat (
162
- cells .get (9 ).value ,
163
- equalTo (state .getRecoverySource () == null || state .getRecoverySource ().getType () != RecoverySource .Type .SNAPSHOT ?
164
- "n/a" :
165
- ((SnapshotRecoverySource ) state .getRecoverySource ()).snapshot ().getRepository ()));
166
- assertThat (
167
- cells .get (10 ).value ,
168
- equalTo (state .getRecoverySource () == null || state .getRecoverySource ().getType () != RecoverySource .Type .SNAPSHOT ?
169
- "n/a" :
170
- ((SnapshotRecoverySource ) state .getRecoverySource ()).snapshot ().getSnapshotId ().getName ()));
171
- assertThat (cells .get (11 ).value , equalTo (state .getIndex ().totalRecoverFiles ()));
172
- assertThat (cells .get (12 ).value , equalTo (state .getIndex ().recoveredFileCount ()));
173
- assertThat (cells .get (13 ).value , equalTo (percent (state .getIndex ().recoveredFilesPercent ())));
174
- assertThat (cells .get (14 ).value , equalTo (state .getIndex ().totalFileCount ()));
175
- assertThat (cells .get (15 ).value , equalTo (state .getIndex ().totalRecoverBytes ()));
176
- assertThat (cells .get (16 ).value , equalTo (state .getIndex ().recoveredBytes ()));
177
- assertThat (cells .get (17 ).value , equalTo (percent (state .getIndex ().recoveredBytesPercent ())));
178
- assertThat (cells .get (18 ).value , equalTo (state .getIndex ().totalBytes ()));
179
- assertThat (cells .get (19 ).value , equalTo (state .getTranslog ().totalOperations ()));
180
- assertThat (cells .get (20 ).value , equalTo (state .getTranslog ().recoveredOperations ()));
181
- assertThat (cells .get (21 ).value , equalTo (percent (state .getTranslog ().recoveredPercent ())));
168
+ final List <Object > expectedValues = Arrays .asList (
169
+ "index" ,
170
+ i ,
171
+ XContentElasticsearchExtension .DEFAULT_DATE_PRINTER .print (state .getTimer ().startTime ()),
172
+ state .getTimer ().startTime (),
173
+ XContentElasticsearchExtension .DEFAULT_DATE_PRINTER .print (state .getTimer ().stopTime ()),
174
+ state .getTimer ().stopTime (),
175
+ new TimeValue (state .getTimer ().time ()),
176
+ state .getRecoverySource ().getType ().name ().toLowerCase (Locale .ROOT ),
177
+ state .getStage ().name ().toLowerCase (Locale .ROOT ),
178
+ state .getSourceNode () == null ? "n/a" : state .getSourceNode ().getHostName (),
179
+ state .getSourceNode () == null ? "n/a" : state .getSourceNode ().getName (),
180
+ state .getTargetNode ().getHostName (),
181
+ state .getTargetNode ().getName (),
182
+ state .getRecoverySource () == null || state .getRecoverySource ().getType () != RecoverySource .Type .SNAPSHOT ?
183
+ "n/a" :
184
+ ((SnapshotRecoverySource ) state .getRecoverySource ()).snapshot ().getRepository (),
185
+ state .getRecoverySource () == null || state .getRecoverySource ().getType () != RecoverySource .Type .SNAPSHOT ?
186
+ "n/a" :
187
+ ((SnapshotRecoverySource ) state .getRecoverySource ()).snapshot ().getSnapshotId ().getName (),
188
+ state .getIndex ().totalRecoverFiles (),
189
+ state .getIndex ().recoveredFileCount (),
190
+ percent (state .getIndex ().recoveredFilesPercent ()),
191
+ state .getIndex ().totalFileCount (),
192
+ state .getIndex ().totalRecoverBytes (),
193
+ state .getIndex ().recoveredBytes (),
194
+ percent (state .getIndex ().recoveredBytesPercent ()),
195
+ state .getIndex ().totalBytes (),
196
+ state .getTranslog ().totalOperations (),
197
+ state .getTranslog ().recoveredOperations (),
198
+ percent (state .getTranslog ().recoveredPercent ()));
199
+
200
+ final List <Table .Cell > cells = table .getRows ().get (i );
201
+ for (int j = 0 ; j < expectedValues .size (); j ++) {
202
+ assertThat (cells .get (j ).value , equalTo (expectedValues .get (j )));
203
+ }
182
204
}
183
205
}
184
206
0 commit comments