|
36 | 36 | import java.util.Set; |
37 | 37 | import java.util.concurrent.atomic.AtomicBoolean; |
38 | 38 |
|
| 39 | +import static org.elasticsearch.core.Strings.format; |
39 | 40 | import static org.hamcrest.Matchers.empty; |
40 | 41 | import static org.hamcrest.Matchers.equalTo; |
41 | 42 | import static org.mockito.ArgumentMatchers.any; |
|
48 | 49 |
|
49 | 50 | public class RestoreServiceTests extends ESTestCase { |
50 | 51 |
|
| 52 | + /** |
| 53 | + * Test that {@link RestoreService#warnIfIndexTemplateMissing(Map, Set, SnapshotInfo)} does not warn for system |
| 54 | + * datastreams. |
| 55 | + */ |
| 56 | + public void testWarnIfIndexTemplateMissingSkipsSystemDataStreams() throws Exception { |
| 57 | + String dataStreamName = ".test-system-data-stream"; |
| 58 | + String backingIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, 1); |
| 59 | + List<Index> indices = List.of(new Index(backingIndexName, randomUUID())); |
| 60 | + |
| 61 | + var dataStream = DataStream.builder(dataStreamName, indices).setSystem(true).setHidden(true).build(); |
| 62 | + var dataStreamsToRestore = Map.of(dataStreamName, dataStream); |
| 63 | + var templatePatterns = Set.of("matches_none"); |
| 64 | + var snapshotInfo = createSnapshotInfo(new Snapshot("repository", new SnapshotId("name", "uuid")), Boolean.FALSE); |
| 65 | + |
| 66 | + RestoreService.warnIfIndexTemplateMissing(dataStreamsToRestore, templatePatterns, snapshotInfo); |
| 67 | + |
| 68 | + ensureNoWarnings(); |
| 69 | + } |
| 70 | + |
| 71 | + /** |
| 72 | + * Test that {@link RestoreService#warnIfIndexTemplateMissing(Map, Set, SnapshotInfo)} warns for non-system datastreams. |
| 73 | + */ |
| 74 | + public void testWarnIfIndexTemplateMissing() throws Exception { |
| 75 | + String dataStreamName = ".test-system-data-stream"; |
| 76 | + String backingIndexName = DataStream.getDefaultBackingIndexName(dataStreamName, 1); |
| 77 | + List<Index> indices = List.of(new Index(backingIndexName, randomUUID())); |
| 78 | + |
| 79 | + var dataStream = DataStream.builder(dataStreamName, indices).build(); |
| 80 | + var dataStreamsToRestore = Map.of(dataStreamName, dataStream); |
| 81 | + var templatePatterns = Set.of("matches_none"); |
| 82 | + var snapshotInfo = createSnapshotInfo(new Snapshot("repository", new SnapshotId("name", "uuid")), Boolean.FALSE); |
| 83 | + |
| 84 | + RestoreService.warnIfIndexTemplateMissing(dataStreamsToRestore, templatePatterns, snapshotInfo); |
| 85 | + |
| 86 | + assertWarnings( |
| 87 | + format( |
| 88 | + "Snapshot [%s] contains data stream [%s] but custer does not have a matching index template. This will cause" |
| 89 | + + " rollover to fail until a matching index template is created", |
| 90 | + snapshotInfo.snapshotId(), |
| 91 | + dataStreamName |
| 92 | + ) |
| 93 | + ); |
| 94 | + } |
| 95 | + |
51 | 96 | public void testUpdateDataStream() { |
52 | 97 | long now = System.currentTimeMillis(); |
53 | 98 | String dataStreamName = "data-stream-1"; |
|
0 commit comments