diff --git a/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessor.java b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessor.java index 7cf6514..7f9e82d 100644 --- a/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessor.java +++ b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessor.java @@ -8,7 +8,9 @@ public interface ChannelProcessor { boolean enabled(); - String processorInfo(); + void setEnabled(boolean enabled); + + ChannelProcessorInfo processorInfo(); long process(List channels) throws JsonProcessingException; } diff --git a/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorInfo.java b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorInfo.java new file mode 100644 index 0000000..a4e77d1 --- /dev/null +++ b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorInfo.java @@ -0,0 +1,5 @@ +package org.phoebus.channelfinder.processors; + +import java.util.Map; + +public record ChannelProcessorInfo(String name, boolean enabled, Map properties) {} diff --git a/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorManager.java b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorManager.java index 35c7d80..209c9dd 100644 --- a/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorManager.java +++ b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorManager.java @@ -25,6 +25,7 @@ import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -75,10 +76,13 @@ public long processorCount() { responseCode = "200", description = "List of processor-info", content = - @Content(array = @ArraySchema(schema = @Schema(implementation = String.class)))) + @Content( + array = + @ArraySchema( + schema = @Schema(implementation = ChannelProcessorInfo.class)))) }) - @GetMapping("/info") - public List processorInfo() { + @GetMapping("/processors") + public List processorInfo() { return channelProcessorService.getProcessorsInfo(); } @@ -151,4 +155,17 @@ public long processChannels( public void processChannels(List channels) { channelProcessorService.sendToProcessors(channels); } + + @Operation(summary = "Set if the processor is enabled or not") + @PutMapping( + value = "/processor/{processorName}/enabled", + produces = {"application/json"}, + consumes = {"application/json"}) + public void setProcessorEnabled( + @PathVariable("processorName") String processorName, + @Parameter(description = "Value of enabled to set, default value: true") + @RequestParam(required = false, name = "enabled", defaultValue = "true") + Boolean enabled) { + channelProcessorService.setProcessorEnabled(processorName, enabled); + } } diff --git a/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorService.java b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorService.java index 3eb4907..a87c954 100644 --- a/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorService.java +++ b/src/main/java/org/phoebus/channelfinder/processors/ChannelProcessorService.java @@ -2,6 +2,8 @@ import java.util.ArrayList; import java.util.List; +import java.util.Objects; +import java.util.Optional; import java.util.Spliterator; import java.util.logging.Level; import java.util.logging.Logger; @@ -17,21 +19,35 @@ public class ChannelProcessorService { private static final Logger logger = Logger.getLogger(ChannelProcessorService.class.getName()); - @Autowired private List channelProcessors; + private final List channelProcessors; - @Autowired private TaskExecutor taskExecutor; + private final TaskExecutor taskExecutor; - @Value("${processors.chunking.size:10000}") - private int chunkSize; + private final int chunkSize; + + public ChannelProcessorService( + @Autowired List channelProcessors, + @Autowired TaskExecutor taskExecutor, + @Value("${processors.chunking.size:10000}") int chunkSize) { + this.channelProcessors = channelProcessors; + this.taskExecutor = taskExecutor; + this.chunkSize = chunkSize; + } long getProcessorCount() { return channelProcessors.size(); } - List getProcessorsInfo() { - return channelProcessors.stream() - .map(ChannelProcessor::processorInfo) - .collect(Collectors.toList()); + List getProcessorsInfo() { + return channelProcessors.stream().map(ChannelProcessor::processorInfo).toList(); + } + + void setProcessorEnabled(String name, boolean enabled) { + Optional processor = + channelProcessors.stream() + .filter(p -> Objects.equals(p.processorInfo().name(), name)) + .findFirst(); + processor.ifPresent(channelProcessor -> channelProcessor.setEnabled(enabled)); } /** @@ -60,7 +76,6 @@ public void sendToProcessors(List channels) { while (true) { List chunk = new ArrayList<>(chunkSize); for (int i = 0; i < chunkSize && split.tryAdvance(chunk::add); i++) {} - ; if (chunk.isEmpty()) break; channelProcessor.process(chunk); } diff --git a/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java b/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java index d7ad8e8..c4de947 100644 --- a/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java +++ b/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java @@ -15,6 +15,7 @@ import org.phoebus.channelfinder.entity.Channel; import org.phoebus.channelfinder.entity.Property; import org.phoebus.channelfinder.processors.ChannelProcessor; +import org.phoebus.channelfinder.processors.ChannelProcessorInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; @@ -64,8 +65,15 @@ public boolean enabled() { } @Override - public String processorInfo() { - Map processorProperties = + public void setEnabled(boolean enabled) { + this.aaEnabled = enabled; + } + + @Override + public ChannelProcessorInfo processorInfo() { + return new ChannelProcessorInfo( + "AAChannelProcessor", + aaEnabled, Map.of( "archiveProperty", archivePropertyName, @@ -74,8 +82,7 @@ public String processorInfo() { "Archivers", aaURLs.keySet().toString(), "AutoPauseOn", - autoPauseOptions.toString()); - return "AAChannelProcessor: ProcessProperties " + processorProperties; + autoPauseOptions.toString())); } /** @@ -199,7 +206,7 @@ private void addChannelChange( aaArchivePVS.get(archiverAlias).add(newArchiverPV); } } - + private ArchiveAction pickArchiveAction(String archiveStatus, String pvStatus) { if (archiveStatus.equals("Being archived") && (pvStatus.equals(PV_STATUS_INACTIVE))) { return ArchiveAction.PAUSE; @@ -209,14 +216,13 @@ private ArchiveAction pickArchiveAction(String archiveStatus, String pvStatus) { && !archiveStatus.equals("Paused") && pvStatus.equals(PV_STATUS_ACTIVE)) { // If archive status anything else return ArchiveAction.ARCHIVE; - } return ArchiveAction.NONE; } private Map> getArchiveActions( - Map archivePVS, ArchiverInfo archiverInfo) { + Map archivePVS, ArchiverInfo archiverInfo) { if (archiverInfo == null) { return Map.of(); } @@ -224,37 +230,43 @@ private Map> getArchiveActions( logger.log(Level.INFO, () -> String.format("Get archiver status in archiver %s", archiverInfo)); Map> result = new EnumMap<>(ArchiveAction.class); - Arrays.stream(ArchiveAction.values()).forEach(archiveAction -> result.put(archiveAction, new ArrayList<>())); + Arrays.stream(ArchiveAction.values()) + .forEach(archiveAction -> result.put(archiveAction, new ArrayList<>())); // Don't request to archive an empty list. if (archivePVS.isEmpty()) { return result; } - List> statuses = archiverClient.getStatuses(archivePVS, archiverInfo.url(), archiverInfo.alias()); + List> statuses = + archiverClient.getStatuses(archivePVS, archiverInfo.url(), archiverInfo.alias()); logger.log(Level.FINER, "Statuses {0}", statuses); - statuses.forEach(archivePVStatusJsonMap -> { - String archiveStatus = archivePVStatusJsonMap.get("status"); - String pvName = archivePVStatusJsonMap.get("pvName"); + statuses.forEach( + archivePVStatusJsonMap -> { + String archiveStatus = archivePVStatusJsonMap.get("status"); + String pvName = archivePVStatusJsonMap.get("pvName"); - if (archiveStatus == null || pvName == null) { - logger.log(Level.WARNING, "Missing status or pvName in archivePVStatusJsonMap: {0}", archivePVStatusJsonMap); - return; - } + if (archiveStatus == null || pvName == null) { + logger.log( + Level.WARNING, + "Missing status or pvName in archivePVStatusJsonMap: {0}", + archivePVStatusJsonMap); + return; + } - ArchivePVOptions archivePVOptions = archivePVS.get(pvName); - if (archivePVOptions == null) { - logger.log(Level.WARNING, "archivePVS does not contain pvName: {0}", pvName); - return; - } + ArchivePVOptions archivePVOptions = archivePVS.get(pvName); + if (archivePVOptions == null) { + logger.log(Level.WARNING, "archivePVS does not contain pvName: {0}", pvName); + return; + } - String pvStatus = archivePVOptions.getPvStatus(); - ArchiveAction action = pickArchiveAction(archiveStatus, pvStatus); + String pvStatus = archivePVOptions.getPvStatus(); + ArchiveAction action = pickArchiveAction(archiveStatus, pvStatus); - List archivePVOptionsList = result.get(action); - archivePVOptionsList.add(archivePVOptions); - }); + List archivePVOptionsList = result.get(action); + archivePVOptionsList.add(archivePVOptions); + }); return result; } - + private ArchivePVOptions createArchivePV( List policyList, Channel channel, String archiveProperty, String pvStaus) { ArchivePVOptions newArchiverPV = new ArchivePVOptions(); diff --git a/src/test/java/org/phoebus/channelfinder/processors/ChannelProcessorManagerIT.java b/src/test/java/org/phoebus/channelfinder/processors/ChannelProcessorManagerIT.java new file mode 100644 index 0000000..7131902 --- /dev/null +++ b/src/test/java/org/phoebus/channelfinder/processors/ChannelProcessorManagerIT.java @@ -0,0 +1,86 @@ +package org.phoebus.channelfinder.processors; + +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import java.util.List; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.phoebus.channelfinder.CFResourceDescriptors; +import org.phoebus.channelfinder.ChannelScroll; +import org.phoebus.channelfinder.entity.Scroll; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.HttpHeaders; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.util.Base64Utils; + +@ExtendWith(SpringExtension.class) +@WebMvcTest(ChannelProcessorManager.class) +@TestPropertySource( + value = "classpath:application_test.properties", + properties = {"elasticsearch.create.indices = false"}) +class ChannelProcessorManagerIT { + + protected static final String AUTHORIZATION = + "Basic " + Base64Utils.encodeToString("admin:adminPass".getBytes()); + + @Autowired protected MockMvc mockMvc; + @MockBean ChannelScroll channelScroll; + + @Test + void testProcessorCount() throws Exception { + MockHttpServletRequestBuilder request = + get("/" + CFResourceDescriptors.CHANNEL_PROCESSOR_RESOURCE_URI + "/count"); + mockMvc.perform(request).andExpect(status().isOk()).andExpect(content().string("2")); + } + + @Test + void testProcessorsInfo() throws Exception { + MockHttpServletRequestBuilder request = + get("/" + CFResourceDescriptors.CHANNEL_PROCESSOR_RESOURCE_URI + "/processors"); + mockMvc + .perform(request) + .andExpect(status().isOk()) + .andExpect( + jsonPath("$[*].name", containsInAnyOrder("AAChannelProcessor", "DummyProcessor"))); + } + + @Test + void testProcessorEnabled() throws Exception { + MockHttpServletRequestBuilder request = + put("/" + + CFResourceDescriptors.CHANNEL_PROCESSOR_RESOURCE_URI + + "/processor/AAChannelProcessor/enabled") + .header(HttpHeaders.AUTHORIZATION, AUTHORIZATION) + .contentType("application/json") + .content("{\"enabled\": false}"); + mockMvc.perform(request).andExpect(status().isOk()); + } + + @Test + void testProcessAllChannels() throws Exception { + Mockito.when(channelScroll.query(Mockito.any())).thenReturn(new Scroll("", List.of())); + + MockHttpServletRequestBuilder request = + put("/" + CFResourceDescriptors.CHANNEL_PROCESSOR_RESOURCE_URI + "/process/all") + .header(HttpHeaders.AUTHORIZATION, AUTHORIZATION); + mockMvc.perform(request).andExpect(status().isOk()); + } + + @Test + void testProcessQuery() throws Exception { + Mockito.when(channelScroll.query(Mockito.any())).thenReturn(new Scroll("", List.of())); + MockHttpServletRequestBuilder request = + put("/" + CFResourceDescriptors.CHANNEL_PROCESSOR_RESOURCE_URI + "/process/query") + .header(HttpHeaders.AUTHORIZATION, AUTHORIZATION); + mockMvc.perform(request).andExpect(status().isOk()); + } +} diff --git a/src/test/java/org/phoebus/channelfinder/processors/ChannelProcessorServiceTest.java b/src/test/java/org/phoebus/channelfinder/processors/ChannelProcessorServiceTest.java new file mode 100644 index 0000000..88454b7 --- /dev/null +++ b/src/test/java/org/phoebus/channelfinder/processors/ChannelProcessorServiceTest.java @@ -0,0 +1,105 @@ +package org.phoebus.channelfinder.processors; + +import com.fasterxml.jackson.core.JsonProcessingException; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.phoebus.channelfinder.entity.Channel; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.TestPropertySource; + +@SpringBootTest() +@TestPropertySource(value = "classpath:application_test.properties") +class ChannelProcessorServiceTest { + + private ChannelProcessorService channelProcessorService; + + @Autowired private DummyProcessor dummyProcessor; + + @Configuration + static class TestConfig { + @Bean + public DummyProcessor dummyProcessor() { + return new DummyProcessor(); + } + } + + static class DummyProcessor implements ChannelProcessor { + private final AtomicBoolean enabled = new AtomicBoolean(false); + private final AtomicBoolean processed = new AtomicBoolean(false); + + @Override + public boolean enabled() { + return enabled.get(); + } + + @Override + public void setEnabled(boolean enabled) { + this.enabled.set(enabled); + } + + @Override + public ChannelProcessorInfo processorInfo() { + return new ChannelProcessorInfo("DummyProcessor", enabled.get(), Map.of()); + } + + @Override + public long process(List channels) throws JsonProcessingException { + processed.set(true); + return channels.size(); + } + + public boolean hasBeenProcessed() { + return processed.get(); + } + + public void reset() { + processed.set(false); + } + } + + @BeforeEach + void setUp() { + channelProcessorService = + new ChannelProcessorService(List.of(dummyProcessor), Runnable::run, 10); + } + + @Test + void testEnableAndDisableDummyProcessor() { + Assertions.assertFalse( + dummyProcessor.enabled(), "Dummy processor should be disabled initially"); + + channelProcessorService.setProcessorEnabled("DummyProcessor", true); + Assertions.assertTrue(dummyProcessor.enabled(), "Dummy processor should be enabled"); + + channelProcessorService.setProcessorEnabled("DummyProcessor", false); + Assertions.assertFalse(dummyProcessor.enabled(), "Dummy processor should be disabled"); + } + + @Test + void testDummyProcessorProcessing() { + dummyProcessor.reset(); + channelProcessorService.setProcessorEnabled("DummyProcessor", false); + Assertions.assertFalse(dummyProcessor.enabled(), "Dummy processor should be disabled"); + + channelProcessorService.sendToProcessors( + Collections.singletonList(new Channel("test-channel"))); + Assertions.assertFalse( + dummyProcessor.hasBeenProcessed(), "Dummy processor should not have been called"); + + channelProcessorService.setProcessorEnabled("DummyProcessor", true); + Assertions.assertTrue(dummyProcessor.enabled(), "Dummy processor should be enabled"); + + channelProcessorService.sendToProcessors( + Collections.singletonList(new Channel("test-channel"))); + Assertions.assertTrue( + dummyProcessor.hasBeenProcessed(), "Dummy processor should have been called"); + } +} diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorIT.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorIT.java similarity index 98% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorIT.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorIT.java index 7d3af32..8fa12e5 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorIT.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorIT.java @@ -1,4 +1,4 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -21,7 +21,7 @@ import org.junit.jupiter.params.provider.MethodSource; import org.phoebus.channelfinder.entity.Channel; import org.phoebus.channelfinder.entity.Property; -import org.phoebus.channelfinder.processors.aa.AAChannelProcessor; +import org.phoebus.channelfinder.processors.ChannelProcessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.TestPropertySource; diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorMultiArchiverIT.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorMultiArchiverIT.java similarity index 96% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorMultiArchiverIT.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorMultiArchiverIT.java index 1cc7607..baeb914 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorMultiArchiverIT.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorMultiArchiverIT.java @@ -1,10 +1,10 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.activeProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.archiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.inactiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.activeProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.archiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.inactiveProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -25,8 +25,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.phoebus.channelfinder.entity.Channel; -import org.phoebus.channelfinder.processors.aa.AAChannelProcessor; -import org.phoebus.channelfinder.processors.aa.ArchiveAction; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.TestPropertySource; diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorMultiIT.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorMultiIT.java similarity index 95% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorMultiIT.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorMultiIT.java index 9e81bb3..dbd2d24 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorMultiIT.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorMultiIT.java @@ -1,10 +1,10 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.activeProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.archiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.inactiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.activeProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.archiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.inactiveProperty; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -25,8 +25,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.phoebus.channelfinder.entity.Channel; -import org.phoebus.channelfinder.processors.aa.AAChannelProcessor; -import org.phoebus.channelfinder.processors.aa.ArchiveAction; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.TestPropertySource; diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorNoDefaultIT.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorNoDefaultIT.java similarity index 86% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorNoDefaultIT.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorNoDefaultIT.java index 2a5eb0c..6912593 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorNoDefaultIT.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorNoDefaultIT.java @@ -1,8 +1,8 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.activeProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.archiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.paramableAAChannelProcessorTest; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.activeProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.archiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.paramableAAChannelProcessorTest; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -17,7 +17,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.phoebus.channelfinder.entity.Channel; import org.phoebus.channelfinder.entity.Property; -import org.phoebus.channelfinder.processors.aa.AAChannelProcessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.TestPropertySource; diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorNoPauseIT.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorNoPauseIT.java similarity index 84% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorNoPauseIT.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorNoPauseIT.java index 410f504..adc10c8 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorNoPauseIT.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorNoPauseIT.java @@ -1,8 +1,8 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.archiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.inactiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.paramableAAChannelProcessorTest; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.archiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.inactiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.paramableAAChannelProcessorTest; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -16,7 +16,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.phoebus.channelfinder.entity.Channel; -import org.phoebus.channelfinder.processors.aa.AAChannelProcessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.TestPropertySource; diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorStatusPauseIT.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorStatusPauseIT.java similarity index 85% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorStatusPauseIT.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorStatusPauseIT.java index 3a7c030..8888585 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorStatusPauseIT.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorStatusPauseIT.java @@ -1,8 +1,8 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.archiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.inactiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.paramableAAChannelProcessorTest; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.archiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.inactiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.paramableAAChannelProcessorTest; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -16,7 +16,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.phoebus.channelfinder.entity.Channel; -import org.phoebus.channelfinder.processors.aa.AAChannelProcessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.TestPropertySource; diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorTagPauseIT.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorTagPauseIT.java similarity index 85% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorTagPauseIT.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorTagPauseIT.java index 8e89d4a..36d8988 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorTagPauseIT.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorTagPauseIT.java @@ -1,8 +1,8 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.archiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.inactiveProperty; -import static org.phoebus.channelfinder.processors.AAChannelProcessorIT.paramableAAChannelProcessorTest; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.archiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.inactiveProperty; +import static org.phoebus.channelfinder.processors.aa.AAChannelProcessorIT.paramableAAChannelProcessorTest; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -16,7 +16,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.phoebus.channelfinder.entity.Channel; -import org.phoebus.channelfinder.processors.aa.AAChannelProcessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.TestPropertySource; diff --git a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorTest.java b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorTest.java similarity index 98% rename from src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorTest.java rename to src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorTest.java index bcc1910..4bbc511 100644 --- a/src/test/java/org/phoebus/channelfinder/processors/AAChannelProcessorTest.java +++ b/src/test/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessorTest.java @@ -1,4 +1,4 @@ -package org.phoebus.channelfinder.processors; +package org.phoebus.channelfinder.processors.aa; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; @@ -11,7 +11,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.phoebus.channelfinder.processors.aa.ArchivePVOptions; class AAChannelProcessorTest { diff --git a/src/test/resources/application_test.properties b/src/test/resources/application_test.properties index 16d8487..e6dfaca 100644 --- a/src/test/resources/application_test.properties +++ b/src/test/resources/application_test.properties @@ -54,7 +54,7 @@ demo_auth.enabled = true ############## Group-->Role Mapping ############## # Customize group names here -admin-groups=cf-admins,sys-admins +admin-groups=cf-admins,sys-admins, ADMIN channel-groups=cf-channels property-groups=cf-properties tag-groups=cf-tags @@ -85,6 +85,9 @@ channelfinder.version=@project.version@ # DEBUG level will log all requests and responses to and from the REST end points logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=INFO +################ Processor ################################################## +processors.chunking.size=10000 + ################ Archiver Appliance Configuration Processor ################# aa.urls={'default': 'http://localhost:17665'} aa.default_alias=default @@ -106,6 +109,6 @@ aa.auto_pause=pvStatus,archive ############################## Metrics ############################### #actuator management.endpoints.web.exposure.include=prometheus, metrics, health, info -metrics.tags=group4_10 -metrics.properties=group4: 10; group5: 10 +metrics.tags= +metrics.properties= metrics.updateInterval=1 \ No newline at end of file diff --git a/src/test/resources/application_test_multi.properties b/src/test/resources/application_test_multi.properties index 5f1b28d..b16b423 100644 --- a/src/test/resources/application_test_multi.properties +++ b/src/test/resources/application_test_multi.properties @@ -88,7 +88,6 @@ logging.level.org.springframework.web.filter.CommonsRequestLoggingFilter=INFO ################ Archiver Appliance Configuration Processor ################# aa.urls={'post': 'http://localhost:17664', 'query': 'http://localhost:17665'} aa.default_alias=post, query -aa.enabled=true aa.pva=false aa.archive_property_name=archive aa.archiver_property_name=archiver