RulesReader { public Rules readRules() { Rules rules = new Rules(); if (Objects.nonNull(yamlData)) { readRulesConfig(rules); readWebHookConfig(rules); readGrpcConfig(rules); readSlackConfig(rules); readWechatConfig(rules); readCompositeRuleConfig(rules); readDingtalkConfig(rules); } return rules; } RulesReader(InputStream inputStream);  RulesReader(Reader io); Rules readRules();  }
@Test public void testReadRules() { RulesReader reader = new RulesReader(this.getClass() .getClassLoader() .getResourceAsStream("alarm-settings.yml")); Rules rules = reader.readRules(); List<AlarmRule> ruleList = rules.getRules(); Assert.assertEquals(3, ruleList.size()); Assert.assertEquals("85", ruleList.get(1).getThreshold()); Assert.assertEquals("endpoint_percent_rule", ruleList.get(0).getAlarmRuleName()); Assert.assertEquals(0, ruleList.get(0).getIncludeNames().size()); Assert.assertEquals(0, ruleList.get(0).getExcludeNames().size()); Assert.assertEquals("Successful rate of endpoint {name} is lower than 75%", ruleList.get(0).getMessage()); Assert.assertEquals("service_b", ruleList.get(1).getIncludeNames().get(1)); Assert.assertEquals("service_c", ruleList.get(1).getExcludeNames().get(0)); Assert.assertEquals("Alarm caused by Rule service_percent_rule", ruleList.get(1).getMessage()); List<String> rulesWebhooks = rules.getWebhooks(); Assert.assertEquals(2, rulesWebhooks.size()); Assert.assertEquals("http: GRPCAlarmSetting grpcAlarmSetting = rules.getGrpchookSetting(); assertNotNull(grpcAlarmSetting); assertThat(grpcAlarmSetting.getTargetHost(), is("127.0.0.1")); assertThat(grpcAlarmSetting.getTargetPort(), is(9888)); SlackSettings slackSettings = rules.getSlacks(); assertNotNull(slackSettings); assertThat(slackSettings.getWebhooks().size(), is(1)); assertThat(slackSettings.getWebhooks().get(0), is("https: assertThat(slackSettings.getTextTemplate(), any(String.class)); WechatSettings wechatSettings = rules.getWecchats(); assertNotNull(wechatSettings); assertThat(wechatSettings.getWebhooks().size(), is(1)); assertThat(wechatSettings.getWebhooks().get(0), is("https: assertThat(slackSettings.getTextTemplate(), any(String.class)); List<CompositeAlarmRule> compositeRules = rules.getCompositeRules(); Assert.assertEquals(1, compositeRules.size()); Assert.assertEquals("endpoint_percent_more_rule && endpoint_percent_rule", compositeRules.get(0).getExpression()); DingtalkSettings dingtalkSettings = rules.getDingtalks(); assertThat(dingtalkSettings.getTextTemplate(), any(String.class)); List<DingtalkSettings.WebHookUrl> webHookUrls = dingtalkSettings.getWebhooks(); assertThat(webHookUrls.size(), is(2)); assertThat(webHookUrls.get(0).getUrl(), is("https: assertThat(webHookUrls.get(0).getSecret(), is("dummysecret")); assertThat(webHookUrls.get(1).getUrl(), is("https: assertNull(webHookUrls.get(1).getSecret()); }