2929import org .elasticsearch .common .Table ;
3030import org .elasticsearch .common .settings .Settings ;
3131import org .elasticsearch .common .unit .TimeValue ;
32+ import org .elasticsearch .common .xcontent .XContentElasticsearchExtension ;
3233import org .elasticsearch .index .Index ;
3334import org .elasticsearch .index .shard .ShardId ;
3435import org .elasticsearch .indices .recovery .RecoveryState ;
3738import org .elasticsearch .usage .UsageService ;
3839
3940import java .util .ArrayList ;
41+ import java .util .Arrays ;
4042import java .util .Collections ;
43+ import java .util .Date ;
4144import java .util .HashMap ;
4245import java .util .List ;
4346import java .util .Locale ;
@@ -53,7 +56,7 @@ public void testRestRecoveryAction() {
5356 final Settings settings = Settings .EMPTY ;
5457 UsageService usageService = new UsageService ();
5558 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 );
5760 final int totalShards = randomIntBetween (1 , 32 );
5861 final int successfulShards = Math .max (0 , totalShards - randomIntBetween (1 , 2 ));
5962 final int failedShards = totalShards - successfulShards ;
@@ -64,7 +67,11 @@ public void testRestRecoveryAction() {
6467 final RecoveryState state = mock (RecoveryState .class );
6568 when (state .getShardId ()).thenReturn (new ShardId (new Index ("index" , "_na_" ), i ));
6669 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 );
6875 when (state .getTimer ()).thenReturn (timer );
6976 when (state .getRecoverySource ()).thenReturn (TestShardRouting .randomRecoverySource ());
7077 when (state .getStage ()).thenReturn (randomFrom (RecoveryState .Stage .values ()));
@@ -122,63 +129,78 @@ public void testRestRecoveryAction() {
122129
123130 List <Table .Cell > headers = table .getHeaders ();
124131
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+ }
147163
148164 assertThat (table .getRows ().size (), equalTo (successfulShards ));
165+
149166 for (int i = 0 ; i < successfulShards ; i ++) {
150167 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+ }
182204 }
183205 }
184206
0 commit comments