Skip to content

Commit f5ece95

Browse files
committed
Add unit tests for changedCustomProjectMetadataSet
1 parent 54e7975 commit f5ece95

File tree

2 files changed

+79
-1
lines changed

2 files changed

+79
-1
lines changed

server/src/main/java/org/elasticsearch/cluster/ClusterChangedEvent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,10 @@ public Set<String> changedCustomProjectMetadataSet(ProjectId projectId) {
174174
ProjectMetadata previousProject = previousState.metadata().projects().get(projectId);
175175
if (previousProject != null && project != null) {
176176
result.addAll(changedCustoms(project.customs(), previousProject.customs()));
177-
} else if (previousProject != null || project != null) {
177+
} else if (previousProject != null) {
178178
result.addAll(previousProject.customs().keySet());
179+
} else if (project != null) {
180+
result.addAll(project.customs().keySet());
179181
}
180182
return result;
181183
}

server/src/test/java/org/elasticsearch/cluster/ClusterChangedEventTests.java

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,82 @@ public void testChangedCustomMetadataSet() {
483483
assertThat(event.changedCustomProjectMetadataSet(), containsInAnyOrder(customProjectMetadata.getWriteableName()));
484484
}
485485

486+
public void testChangedCustomProjectMetadataSet() {
487+
final CustomProjectMetadata custom1 = new CustomProjectMetadata("custom1");
488+
final CustomProjectMetadata custom2 = new CustomProjectMetadata("custom2");
489+
final ProjectMetadata project1 = ProjectMetadata.builder(randomUniqueProjectId())
490+
.putCustom(custom1.getWriteableName(), custom1).build();
491+
final ProjectMetadata project2 = ProjectMetadata.builder(randomUniqueProjectId())
492+
.putCustom(custom2.getWriteableName(), custom2).build();
493+
494+
final ClusterState originalState = ClusterState.builder(TEST_CLUSTER_NAME)
495+
.metadata(Metadata.builder().put(project1).build())
496+
.build();
497+
498+
// No changes
499+
{
500+
ClusterState newState = ClusterState.builder(originalState).build();
501+
ClusterChangedEvent event = new ClusterChangedEvent("_na_", newState, originalState);
502+
// existing project
503+
assertTrue(event.changedCustomProjectMetadataSet(project1.id()).isEmpty());
504+
// non-existing project
505+
assertTrue(event.changedCustomProjectMetadataSet(project2.id()).isEmpty());
506+
}
507+
508+
// Add custom to existing project
509+
{
510+
ClusterState newState = ClusterState.builder(originalState)
511+
.putProjectMetadata(ProjectMetadata.builder(project1).putCustom(custom2.getWriteableName(), custom2).build())
512+
.build();
513+
ClusterChangedEvent event = new ClusterChangedEvent("_na_", newState, originalState);
514+
assertEquals(Set.of(custom2.getWriteableName()), event.changedCustomProjectMetadataSet(project1.id()));
515+
}
516+
517+
// Remove custom from existing project
518+
{
519+
ClusterState newState = ClusterState.builder(originalState)
520+
.putProjectMetadata(ProjectMetadata.builder(project1).removeCustom(custom1.getWriteableName()).build())
521+
.build();
522+
ClusterChangedEvent event = new ClusterChangedEvent("_na_", newState, originalState);
523+
assertEquals(Set.of(custom1.getWriteableName()), event.changedCustomProjectMetadataSet(project1.id()));
524+
}
525+
526+
// Add new project with custom
527+
{
528+
ClusterState newState = ClusterState.builder(originalState)
529+
.putProjectMetadata(ProjectMetadata.builder(project2).build())
530+
.build();
531+
ClusterChangedEvent event = new ClusterChangedEvent("_na_", newState, originalState);
532+
assertEquals(Set.of(IndexGraveyard.TYPE, custom2.getWriteableName()), event.changedCustomProjectMetadataSet(project2.id()));
533+
// No change to other project
534+
assertTrue(event.changedCustomProjectMetadataSet(project1.id()).isEmpty());
535+
}
536+
537+
// remove project
538+
{
539+
ClusterState oldState = ClusterState.builder(originalState).putProjectMetadata(ProjectMetadata.builder(project2).build())
540+
.build();
541+
// project2 is removed
542+
ClusterState newState = originalState;
543+
ClusterChangedEvent event = new ClusterChangedEvent("_na_", newState, oldState);
544+
assertEquals(Set.of(IndexGraveyard.TYPE, custom2.getWriteableName()), event.changedCustomProjectMetadataSet(project2.id()));
545+
// No change to other project
546+
assertTrue(event.changedCustomProjectMetadataSet(project1.id()).isEmpty());
547+
}
548+
549+
// add custom to project1 + remove project2
550+
{
551+
ClusterState oldState = ClusterState.builder(originalState).putProjectMetadata(ProjectMetadata.builder(project2).build())
552+
.build();
553+
ClusterState newState = ClusterState.builder(originalState)
554+
.putProjectMetadata(ProjectMetadata.builder(project1).putCustom(custom2.getWriteableName(), custom2).build())
555+
.build();
556+
ClusterChangedEvent event = new ClusterChangedEvent("_na_", newState, oldState);
557+
assertEquals(Set.of(IndexGraveyard.TYPE, custom2.getWriteableName()), event.changedCustomProjectMetadataSet(project2.id()));
558+
assertEquals(Set.of(custom2.getWriteableName()), event.changedCustomProjectMetadataSet(project1.id()));
559+
}
560+
}
561+
486562
public void testChangedCustomMetadataSetMultiProject() {
487563
final CustomProjectMetadata project1Custom = new CustomProjectMetadata("project1");
488564
final CustomProjectMetadata project2Custom = new CustomProjectMetadata("project2");

0 commit comments

Comments
 (0)