This is an automated email from the ASF dual-hosted git repository. avijayan pushed a commit to branch branch-feature-AMBARI-23212 in repository https://gitbox.apache.org/repos/asf/ambari.git
commit d865b6ef31c894d4160690edf93fdaf430296e86 Author: Aravindan Vijayan <avija...@hortonworks.com> AuthorDate: Thu Nov 2 14:41:38 2017 -0700 AMBARI-22359 : Fix Serialization issues in Metric Definition Service (avijayan). --- .../src/main/resources/config.yml | 4 +- .../adservice/app/AnomalyDetectionAppConfig.scala | 10 ++--- .../ambari/metrics/adservice/common/Season.scala | 4 +- .../MetricCollectorConfiguration.scala | 10 ----- ... => MetricDefinitionServiceConfiguration.scala} | 2 +- .../adservice/db/PhoenixAnomalyStoreAccessor.scala | 8 ++-- .../adservice/metadata/ADMetadataProvider.scala | 12 ++--- .../adservice/metadata/MetricDefinition.scala | 52 ++++++++++++++++++---- ...Service.scala => MetricDefinitionService.scala} | 2 +- ...mpl.scala => MetricDefinitionServiceImpl.scala} | 34 ++++++++++++-- .../metadata/MetricSourceDefinition.scala | 38 +--------------- .../app/AnomalyDetectionAppConfigTest.scala | 2 +- .../metrics/adservice/common/SeasonTest.scala | 4 +- ...est.scala => MetricDefinitionServiceTest.scala} | 34 +++++++------- .../metadata/MetricSourceDefinitionTest.scala | 11 +++-- 15 files changed, 126 insertions(+), 101 deletions(-) diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/resources/config.yml b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/resources/config.yml index 6953745..920c50c 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/resources/config.yml +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/resources/config.yml @@ -20,8 +20,8 @@ server: logging: type: external -metricManagerService: - inputDefinitionDirectory: /etc/adservice/conf/input-definitions-directory +metricDefinitionService: + inputDefinitionDirectory: /etc/ambari-metrics-anomaly-detection/conf metricsCollector: hostPortList: host1:6188,host2:6188 diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfig.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfig.scala index be8d027..c1ef0d1 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfig.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfig.scala @@ -20,7 +20,7 @@ package org.apache.ambari.metrics.adservice.app import javax.validation.Valid -import org.apache.ambari.metrics.adservice.configuration.{AdServiceConfiguration, HBaseConfiguration, MetricCollectorConfiguration, MetricManagerServiceConfiguration} +import org.apache.ambari.metrics.adservice.configuration.{AdServiceConfiguration, HBaseConfiguration, MetricCollectorConfiguration, MetricDefinitionServiceConfiguration} import com.fasterxml.jackson.annotation.JsonProperty @@ -35,7 +35,7 @@ class AnomalyDetectionAppConfig extends Configuration { Metric Definition Service configuration */ @Valid - private val metricManagerServiceConfiguration = new MetricManagerServiceConfiguration + private val metricDefinitionServiceConfiguration = new MetricDefinitionServiceConfiguration @Valid private val metricCollectorConfiguration = new MetricCollectorConfiguration @@ -53,9 +53,9 @@ class AnomalyDetectionAppConfig extends Configuration { HBaseConfiguration.getHBaseConf } - @JsonProperty("metricManagerService") - def getMetricManagerServiceConfiguration: MetricManagerServiceConfiguration = { - metricManagerServiceConfiguration + @JsonProperty("metricDefinitionService") + def getMetricDefinitionServiceConfiguration: MetricDefinitionServiceConfiguration = { + metricDefinitionServiceConfiguration } @JsonProperty("adQueryService") diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/common/Season.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/common/Season.scala index aba2587..f875e3b 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/common/Season.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/common/Season.scala @@ -112,11 +112,11 @@ object Season { validSeasons.toList } - def serialize(season: Season) : String = { + def toJson(season: Season) : String = { mapper.writeValueAsString(season) } - def deserialize(seasonString: String) : Season = { + def fromJson(seasonString: String) : Season = { mapper.readValue[Season](seasonString) } } diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricCollectorConfiguration.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricCollectorConfiguration.scala index 50a0b72..9418897 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricCollectorConfiguration.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricCollectorConfiguration.scala @@ -39,14 +39,4 @@ class MetricCollectorConfiguration { @JsonProperty def getMetadataEndpoint: String = metadataEndpoint - @JsonProperty - def setHostPortList(hostPortList: String): Unit = { - this.hostPortList = hostPortList - } - - @JsonProperty - def setMetadataEndpoint(metadataEndpoint: String): Unit = { - this.metadataEndpoint = metadataEndpoint - } - } diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricManagerServiceConfiguration.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricDefinitionServiceConfiguration.scala similarity index 96% rename from ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricManagerServiceConfiguration.scala rename to ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricDefinitionServiceConfiguration.scala index e5960d5..b560713 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricManagerServiceConfiguration.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/configuration/MetricDefinitionServiceConfiguration.scala @@ -24,7 +24,7 @@ import com.fasterxml.jackson.annotation.JsonProperty /** * Class to capture the Metric Definition Service configuration. */ -class MetricManagerServiceConfiguration { +class MetricDefinitionServiceConfiguration { @NotNull private val inputDefinitionDirectory: String = "" diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/db/PhoenixAnomalyStoreAccessor.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/db/PhoenixAnomalyStoreAccessor.scala index 1191e90..36aea21 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/db/PhoenixAnomalyStoreAccessor.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/db/PhoenixAnomalyStoreAccessor.scala @@ -94,11 +94,11 @@ object PhoenixAnomalyStoreAccessor { val timestamp: Long = rs.getLong("ANOMALY_TIMESTAMP") val metricValue: Double = rs.getDouble("METRIC_VALUE") val methodType: AnomalyDetectionMethod = AnomalyDetectionMethod.withName(rs.getString("METHOD_NAME")) - val season: Season = Season.deserialize(rs.getString("SEASONAL_INFO")) + val season: Season = Season.fromJson(rs.getString("SEASONAL_INFO")) val anomalyScore: Double = rs.getDouble("ANOMALY_SCORE") val modelSnapshot: String = rs.getString("MODEL_PARAMETERS") - val metricKey: MetricKey = null //MetricManager.getMetricKeyFromUuid(uuid) + val metricKey: MetricKey = null //MetricManager.getMetricKeyFromUuid(uuid) //TODO val anomalyInstance: SingleMetricAnomalyInstance = new PointInTimeAnomalyInstance(metricKey, timestamp, metricValue, methodType, anomalyScore, season, modelSnapshot) anomalies.+=(anomalyInstance) @@ -111,11 +111,11 @@ object PhoenixAnomalyStoreAccessor { val referenceStart: Long = rs.getLong("TEST_PERIOD_START") val referenceEnd: Long = rs.getLong("TEST_PERIOD_END") val methodType: AnomalyDetectionMethod = AnomalyDetectionMethod.withName(rs.getString("METHOD_NAME")) - val season: Season = Season.deserialize(rs.getString("SEASONAL_INFO")) + val season: Season = Season.fromJson(rs.getString("SEASONAL_INFO")) val anomalyScore: Double = rs.getDouble("ANOMALY_SCORE") val modelSnapshot: String = rs.getString("MODEL_PARAMETERS") - val metricKey: MetricKey = null //MetricManager.getMetricKeyFromUuid(uuid) + val metricKey: MetricKey = null //MetricManager.getMetricKeyFromUuid(uuid) //TODO val anomalyInstance: SingleMetricAnomalyInstance = TrendAnomalyInstance(metricKey, TimeRange(anomalyStart, anomalyEnd), TimeRange(referenceStart, referenceEnd), diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/ADMetadataProvider.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/ADMetadataProvider.scala index 801c5f5..3bcf4b0 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/ADMetadataProvider.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/ADMetadataProvider.scala @@ -56,11 +56,13 @@ class ADMetadataProvider extends MetricMetadataProvider { val metricKeySet: scala.collection.mutable.Set[MetricKey] = scala.collection.mutable.Set.empty[MetricKey] for (metricDef <- metricSourceDefinition.metricDefinitions) { - for (hostPort <- metricCollectorHostPorts) { - val metricKeys: Set[MetricKey] = getKeysFromMetricsCollector(hostPort + metricMetadataPath, metricDef) - if (metricKeys != null) { - keysMap += (metricDef -> metricKeys) - metricKeySet.++(metricKeys) + if (metricDef.isValid) { //Skip requesting metric keys for invalid definitions. + for (hostPort <- metricCollectorHostPorts) { + val metricKeys: Set[MetricKey] = getKeysFromMetricsCollector(hostPort + metricMetadataPath, metricDef) + if (metricKeys != null) { + keysMap += (metricDef -> metricKeys) + metricKeySet.++(metricKeys) + } } } } diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinition.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinition.scala index 0a5e51f..036867b 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinition.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinition.scala @@ -18,9 +18,12 @@ package org.apache.ambari.metrics.adservice.metadata +import org.apache.commons.lang3.StringUtils /* { "metric-name": "mem_free", + "appId" : "HOST", + "hosts" : ["h1","h2"], "metric-description" : "Free memory on a Host.", "troubleshooting-info" : "Sudden drop / hike in free memory on a host.", "static-threshold" : 10, @@ -28,12 +31,33 @@ package org.apache.ambari.metrics.adservice.metadata } */ -case class MetricDefinition (metricName: String, - appId: String, - hosts: List[String], - metricDescription: String, - troubleshootingInfo: String, - staticThreshold: Double) { +@SerialVersionUID(1002L) +class MetricDefinition extends Serializable { + + var metricName: String = _ + var appId: String = _ + var hosts: List[String] = List.empty[String] + var metricDescription: String = "" + var troubleshootingInfo: String = "" + var staticThreshold: Double = _ + + //A Metric definition is valid if we can resolve a metricName and appId (defined or inherited) at runtime) + private var valid : Boolean = true + + def this(metricName: String, + appId: String, + hosts: List[String], + metricDescription: String, + troubleshootingInfo: String, + staticThreshold: Double) = { + this + this.metricName = metricName + this.appId = appId + this.hosts = hosts + this.metricDescription = metricDescription + this.troubleshootingInfo = troubleshootingInfo + this.staticThreshold = staticThreshold + } @Override override def equals(obj: scala.Any): Boolean = { @@ -46,10 +70,20 @@ case class MetricDefinition (metricName: String, if (!(metricName == that.metricName)) return false - if (!(appId == that.appId)) - return false + if (StringUtils.isNotEmpty(appId)) { + appId == that.appId + } + else { + StringUtils.isEmpty(that.appId) + } + } + + def isValid: Boolean = { + valid + } - true + def makeInvalid() : Unit = { + valid = false } } diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerService.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionService.scala similarity index 98% rename from ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerService.scala rename to ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionService.scala index 12bd7e4..635dc60 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerService.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionService.scala @@ -17,7 +17,7 @@ package org.apache.ambari.metrics.adservice.metadata -trait MetricManagerService { +trait MetricDefinitionService { /** * Given a 'UUID', return the metric key associated with it. diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerServiceImpl.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionServiceImpl.scala similarity index 83% rename from ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerServiceImpl.scala rename to ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionServiceImpl.scala index ce02775..ffa9944 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerServiceImpl.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionServiceImpl.scala @@ -23,7 +23,7 @@ import org.apache.ambari.metrics.adservice.db.AdMetadataStoreAccessor import com.google.inject.{Inject, Singleton} @Singleton -class MetricManagerServiceImpl extends MetricManagerService { +class MetricDefinitionServiceImpl extends MetricDefinitionService { @Inject var adMetadataStoreAccessor: AdMetadataStoreAccessor = _ @@ -66,15 +66,21 @@ class MetricManagerServiceImpl extends MetricManagerService { //Load definitions from metadata store val definitionsFromStore: List[MetricSourceDefinition] = adMetadataStoreAccessor.getSavedInputDefinitions + for (definition <- definitionsFromStore) { + validateAndSanitizeMetricSourceDefinition(definition) + } //Load definitions from configs val definitionsFromConfig: List[MetricSourceDefinition] = getInputDefinitionsFromConfig + for (definition <- definitionsFromConfig) { + validateAndSanitizeMetricSourceDefinition(definition) + } //Union the 2 sources, with DB taking precedence. //Save new definition list to DB. metricSourceDefinitionMap = metricSourceDefinitionMap.++(combineDefinitionSources(definitionsFromConfig, definitionsFromStore)) - //Reach out to AMS Metadata and get Metric Keys. Pass in List<CD> and get back Map<MD,Set<MK>> + //Reach out to AMS Metadata and get Metric Keys. Pass in List<CD> and get back (Map<MD,Set<MK>>, Set<MK>) for (definition <- metricSourceDefinitionMap.values) { val (definitionKeyMap: Map[MetricDefinition, Set[MetricKey]], keys: Set[MetricKey])= metricMetadataProvider.getMetricKeysForDefinitions(definition) metricDefinitionMetricKeyMap = metricDefinitionMetricKeyMap.++(definitionKeyMap) @@ -173,11 +179,33 @@ class MetricManagerServiceImpl extends MetricManagerService { } def getInputDefinitionsFromConfig: List[MetricSourceDefinition] = { - val configDirectory = configuration.getMetricManagerServiceConfiguration.getInputDefinitionDirectory + val configDirectory = configuration.getMetricDefinitionServiceConfiguration.getInputDefinitionDirectory InputMetricDefinitionParser.parseInputDefinitionsFromDirectory(configDirectory) } def setAdMetadataStoreAccessor (adMetadataStoreAccessor: AdMetadataStoreAccessor) : Unit = { this.adMetadataStoreAccessor = adMetadataStoreAccessor } + + def validateAndSanitizeMetricSourceDefinition(metricSourceDefinition: MetricSourceDefinition): Unit = { + val sourceLevelAppId: String = metricSourceDefinition.appId + val sourceLevelHostList: List[String] = metricSourceDefinition.hosts + + for (metricDef <- metricSourceDefinition.metricDefinitions.toList) { + if (metricDef.appId == null) { + if (sourceLevelAppId == null || sourceLevelAppId.isEmpty) { + metricDef.makeInvalid() + } else { + metricDef.appId = sourceLevelAppId + } + } + + if (metricDef.isValid && metricDef.hosts.isEmpty) { + if (sourceLevelHostList != null && sourceLevelHostList.nonEmpty) { + metricDef.hosts = sourceLevelHostList + } + } + } + } + } diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinition.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinition.scala index 60198e0..47b1499 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinition.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/main/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinition.scala @@ -22,10 +22,6 @@ import javax.xml.bind.annotation.XmlRootElement import org.apache.ambari.metrics.adservice.metadata.MetricSourceDefinitionType.MetricSourceDefinitionType import org.apache.ambari.metrics.adservice.model.AnomalyType.AnomalyType -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.module.scala.DefaultScalaModule -import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper - /* { "definition-name": "host-memory", @@ -45,27 +41,10 @@ import com.fasterxml.jackson.module.scala.experimental.ScalaObjectMapper } */ -/* - -On Startup -Read input definitions directory, parse the JSONs -Create / Update the metric definitions in DB -Convert metric definitions to Map<MetricKey, MetricDefinition> - -What to do want to have in memory? -Map of Metric Key -> List<Component Definitions> - -What do we use metric definitions for? -Anomaly GET - Associate definition information as well. -Definition CRUD - Get definition given definition name -Get set of metrics that are being tracked -Return definition information for a metric key -Given a metric definition name, return set of metrics. - -*/ +@SerialVersionUID(10001L) @XmlRootElement -class MetricSourceDefinition { +class MetricSourceDefinition extends Serializable{ var definitionName: String = _ var appId: String = _ @@ -103,17 +82,4 @@ class MetricSourceDefinition { val that = obj.asInstanceOf[MetricSourceDefinition] definitionName.equals(that.definitionName) } -} - -object MetricSourceDefinition { - val mapper = new ObjectMapper() with ScalaObjectMapper - mapper.registerModule(DefaultScalaModule) - - def serialize(definition: MetricSourceDefinition) : String = { - mapper.writeValueAsString(definition) - } - - def deserialize(definitionString: String) : MetricSourceDefinition = { - mapper.readValue[MetricSourceDefinition](definitionString) - } } \ No newline at end of file diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfigTest.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfigTest.scala index 8e3a949..104ccea 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfigTest.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/app/AnomalyDetectionAppConfigTest.scala @@ -44,7 +44,7 @@ class AnomalyDetectionAppConfigTest extends FunSuite { assert(config.isInstanceOf[AnomalyDetectionAppConfig]) - assert(config.getMetricManagerServiceConfiguration.getInputDefinitionDirectory == "/etc/adservice/conf/input-definitions-directory") + assert(config.getMetricDefinitionServiceConfiguration.getInputDefinitionDirectory == "/etc/ambari-metrics-anomaly-detection/conf") assert(config.getMetricCollectorConfiguration.getHostPortList == "host1:6188,host2:6188") diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/common/SeasonTest.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/common/SeasonTest.scala index 4d542e8..a823c73 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/common/SeasonTest.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/common/SeasonTest.scala @@ -78,9 +78,9 @@ class SeasonTest extends FunSuite { test("testSerialize") { val season1 : Season = Season(Range(Calendar.MONDAY,Calendar.FRIDAY), Range(9,17)) - val seasonString = Season.serialize(season1) + val seasonString = Season.toJson(season1) - val season2 : Season = Season.deserialize(seasonString) + val season2 : Season = Season.fromJson(seasonString) assert(season1 == season2) val season3 : Season = Season(Range(Calendar.MONDAY,Calendar.THURSDAY), Range(9,17)) diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerServiceTest.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionServiceTest.scala similarity index 73% rename from ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerServiceTest.scala rename to ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionServiceTest.scala index 8e19a0f..d3454f2 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricManagerServiceTest.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricDefinitionServiceTest.scala @@ -24,7 +24,7 @@ import org.easymock.EasyMock.{anyObject, expect, expectLastCall, replay} import org.scalatest.FunSuite import org.scalatest.easymock.EasyMockSugar -class MetricManagerServiceTest extends FunSuite { +class MetricDefinitionServiceTest extends FunSuite { test("testAddDefinition") { @@ -42,14 +42,14 @@ class MetricManagerServiceTest extends FunSuite { expect(adMetadataStoreAccessor.saveInputDefinition(newDef)).andReturn(true).once() replay(adMetadataStoreAccessor) - val metricManagerService: MetricManagerServiceImpl = new MetricManagerServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) + val metricDefinitionService: MetricDefinitionServiceImpl = new MetricDefinitionServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) - metricManagerService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) + metricDefinitionService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) - metricManagerService.addDefinition(newDef) + metricDefinitionService.addDefinition(newDef) - assert(metricManagerService.metricSourceDefinitionMap.size == 4) - assert(metricManagerService.metricSourceDefinitionMap.get("testDefinition") != null) + assert(metricDefinitionService.metricSourceDefinitionMap.size == 4) + assert(metricDefinitionService.metricSourceDefinitionMap.get("testDefinition") != null) } test("testGetDefinitionByName") { @@ -64,11 +64,11 @@ class MetricManagerServiceTest extends FunSuite { expect(adMetadataStoreAccessor.getSavedInputDefinitions).andReturn(definitions.toList).once() replay(adMetadataStoreAccessor) - val metricManagerService: MetricManagerServiceImpl = new MetricManagerServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) + val metricDefinitionService: MetricDefinitionServiceImpl = new MetricDefinitionServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) - metricManagerService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) + metricDefinitionService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) for (i <- 1 to 3) { - val definition: MetricSourceDefinition = metricManagerService.getDefinitionByName("TestDefinition" + i) + val definition: MetricSourceDefinition = metricDefinitionService.getDefinitionByName("TestDefinition" + i) assert(definition != null) } } @@ -90,10 +90,10 @@ class MetricManagerServiceTest extends FunSuite { expect(adMetadataStoreAccessor.getSavedInputDefinitions).andReturn(definitions.toList).once() replay(adMetadataStoreAccessor) - val metricManagerService: MetricManagerServiceImpl = new MetricManagerServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) + val metricDefinitionService: MetricDefinitionServiceImpl = new MetricDefinitionServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) - metricManagerService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) - val definitionsByAppId: List[MetricSourceDefinition] = metricManagerService.getDefinitionByAppId("testAppId") + metricDefinitionService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) + val definitionsByAppId: List[MetricSourceDefinition] = metricDefinitionService.getDefinitionByAppId("testAppId") assert(definitionsByAppId.size == 2) } @@ -115,15 +115,15 @@ class MetricManagerServiceTest extends FunSuite { expect(adMetadataStoreAccessor.removeInputDefinition(anyObject[String])).andReturn(true).times(2) replay(adMetadataStoreAccessor) - val metricManagerService: MetricManagerServiceImpl = new MetricManagerServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) + val metricDefinitionService: MetricDefinitionServiceImpl = new MetricDefinitionServiceImpl(new AnomalyDetectionAppConfig, adMetadataStoreAccessor) - metricManagerService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) + metricDefinitionService.setAdMetadataStoreAccessor(adMetadataStoreAccessor) - var success: Boolean = metricManagerService.deleteDefinitionByName("TestDefinition1") + var success: Boolean = metricDefinitionService.deleteDefinitionByName("TestDefinition1") assert(success) - success = metricManagerService.deleteDefinitionByName("TestDefinition2") + success = metricDefinitionService.deleteDefinitionByName("TestDefinition2") assert(!success) - success = metricManagerService.deleteDefinitionByName("TestDefinition3") + success = metricDefinitionService.deleteDefinitionByName("TestDefinition3") assert(success) } diff --git a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinitionTest.scala b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinitionTest.scala index c4d639c..0149673 100644 --- a/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinitionTest.scala +++ b/ambari-metrics/ambari-metrics-anomaly-detection-service/src/test/scala/org/apache/ambari/metrics/adservice/metadata/MetricSourceDefinitionTest.scala @@ -17,6 +17,7 @@ package org.apache.ambari.metrics.adservice.metadata +import org.apache.commons.lang.SerializationUtils import org.scalatest.FunSuite class MetricSourceDefinitionTest extends FunSuite { @@ -46,6 +47,10 @@ class MetricSourceDefinitionTest extends FunSuite { val msd1 : MetricSourceDefinition = new MetricSourceDefinition("testDefinition", "testAppId", MetricSourceDefinitionType.API) val msd2 : MetricSourceDefinition = new MetricSourceDefinition("testDefinition", "testAppId2", MetricSourceDefinitionType.API) assert(msd1 == msd2) + + val msd3 : MetricSourceDefinition = new MetricSourceDefinition("testDefinition1", "testAppId", MetricSourceDefinitionType.API) + val msd4 : MetricSourceDefinition = new MetricSourceDefinition("testDefinition2", "testAppId2", MetricSourceDefinitionType.API) + assert(msd3 != msd4) } test("testRemoveMetricDefinition") { @@ -61,10 +66,10 @@ class MetricSourceDefinitionTest extends FunSuite { test("serializeDeserialize") { val msd : MetricSourceDefinition = new MetricSourceDefinition("testDefinition", "testAppId", MetricSourceDefinitionType.API) - val msdString: String = MetricSourceDefinition.serialize(msd) - assert(msdString.nonEmpty) + val msdByteArray: Array[Byte] = SerializationUtils.serialize(msd) + assert(msdByteArray.nonEmpty) - val msd2: MetricSourceDefinition = MetricSourceDefinition.deserialize(msdString) + val msd2: MetricSourceDefinition = SerializationUtils.deserialize(msdByteArray).asInstanceOf[MetricSourceDefinition] assert(msd2 != null) assert(msd == msd2) -- To stop receiving notification emails like this one, please contact avija...@apache.org.