MetricFunctionsReader { public static List<MetricFunctionsSpec> readFromInputFile(String InputFilename) { List<MetricFunctionsSpec> metricFunctionSpecList = new ArrayList<>(); try { InputStream inputStream = new FileInputStream(InputFilename); InputStreamReader streamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8); BufferedReader bufferedReader = new BufferedReader(streamReader); String metricFunctionSpecString; while ((metricFunctionSpecString = bufferedReader.readLine()) != null) { ObjectMapper objectMapper = new ObjectMapper(); metricFunctionSpecList.add(objectMapper.readValue(metricFunctionSpecString, MetricFunctionsSpec.class)); } bufferedReader.close(); } catch (Exception e) { log.error("Exception while reading input functions definition", e); } return metricFunctionSpecList; }  static List<MetricFunctionsSpec> readFromInputFile(String InputFilename);  }
@Test public void testReadFromInputFileException() throws Exception { val invalidFileName = "config/no-such-file-test.txt"; List<MetricFunctionsSpec> metricFunctionsSpecList = MetricFunctionsReader.readFromInputFile(invalidFileName); if (metricFunctionsSpecList.isEmpty()) { log.error("Exception reading input file, exiting"); } }
@Test public void testReadFromInputFile() { val functionInputFileName = "config/functions-test.txt"; List<MetricFunctionsSpec> metricFunctionsSpecList = MetricFunctionsReader .readFromInputFile(ClassLoader.getSystemResource(functionInputFileName).getPath()); assertEquals(1, metricFunctionsSpecList.size()); MetricFunctionsSpec metricFunctionsSpec = metricFunctionsSpecList.get(0); assertEquals("sumSeries(a.b.c)", metricFunctionsSpec.getFunction()); assertEquals(60, metricFunctionsSpec.getIntervalInSecs()); Map<String, String> tags = metricFunctionsSpec.getTags(); assertEquals(3, tags.size()); assertEquals("sample_app1", tags.get("app_name")); assertEquals("test", tags.get("env")); assertEquals("custom_tag_value", tags.get("custom_tag")); assertEquals(true, metricFunctionsSpec.getMergeTags()); }
@Test public void testReadFromInputFileMergeTagsFalse() { val functionInputFileName = "config/functions-mergeTags-false-test.txt"; List<MetricFunctionsSpec> metricFunctionsSpecList = MetricFunctionsReader .readFromInputFile(ClassLoader.getSystemResource(functionInputFileName).getPath()); assertEquals(1, metricFunctionsSpecList.size()); MetricFunctionsSpec metricFunctionsSpec = metricFunctionsSpecList.get(0); assertEquals(false, metricFunctionsSpec.getMergeTags()); }