Hook selectors into the price computation path
[aquarium] / src / test / scala / gr / grnet / aquarium / policy / StdPolicyTest.scala
index f320cbf..3dc1160 100644 (file)
@@ -37,8 +37,10 @@ package gr.grnet.aquarium.policy
 
 import org.junit.Test
 import gr.grnet.aquarium.Timespan
-import gr.grnet.aquarium.charging.{OnceChargingBehavior, ContinuousChargingBehavior, OnOffChargingBehavior, DiscreteChargingBehavior}
-import gr.grnet.aquarium.converter.{StdConverters, PrettyJsonTextFormat}
+import gr.grnet.aquarium.charging.{OnceChargingBehavior, ContinuousChargingBehavior, VMChargingBehavior}
+import gr.grnet.aquarium.charging.VMChargingBehavior.Selectors.Power
+import gr.grnet.aquarium.util.nameOfClass
+import FullPriceTable.DefaultSelectorKey
 
 /**
  *
@@ -47,38 +49,41 @@ import gr.grnet.aquarium.converter.{StdConverters, PrettyJsonTextFormat}
 
 class StdPolicyTest {
   final lazy val policy = StdPolicy(
-    id = "policy-1",
+    id = "default-policy",
     parentID = None,
 
     validityTimespan = Timespan(0),
 
     resourceTypes = Set(
-      ResourceType("bandwidth", "MB/Hr", classOf[DiscreteChargingBehavior].getName),
-      ResourceType("vmtime",    "Hr",    classOf[OnOffChargingBehavior].getName),
-      ResourceType("diskspace", "MB/Hr", classOf[ContinuousChargingBehavior].getName)
+      ResourceType("diskspace", "MB/Hr", nameOfClass[ContinuousChargingBehavior]),
+      ResourceType("vmtime",    "Hr",    nameOfClass[VMChargingBehavior])
     ),
 
     chargingBehaviors = Set(
-      classOf[DiscreteChargingBehavior].getName,
-      classOf[OnOffChargingBehavior].getName,
-      classOf[ContinuousChargingBehavior].getName,
-      classOf[OnceChargingBehavior].getName
+      nameOfClass[VMChargingBehavior],
+      nameOfClass[ContinuousChargingBehavior],
+      nameOfClass[OnceChargingBehavior]
     ),
 
     roleMapping = Map(
       "default" -> FullPriceTable(Map(
-        "bandwidth" -> EffectivePriceTable(EffectiveUnitPrice(0.01, None) :: Nil),
-        "vmtime"    -> EffectivePriceTable(EffectiveUnitPrice(0.01, None) :: Nil),
-        "diskspace" -> EffectivePriceTable(EffectiveUnitPrice(0.01, None) :: Nil)
+        "diskspace" -> Map(
+          DefaultSelectorKey -> EffectivePriceTable(EffectiveUnitPrice(0.01) :: Nil)
+        ),
+        "vmtime" -> Map(
+          Power.powerOn  -> EffectivePriceTable(EffectiveUnitPrice(0.01) :: Nil),
+          Power.powerOff -> EffectivePriceTable(EffectiveUnitPrice(0.001) :: Nil) // cheaper when the VM is OFF
+        )
       ))
     )
   )
 
   @Test
   def testJson(): Unit = {
-    val converters = StdConverters.AllConverters
-    val json = converters.convertEx[PrettyJsonTextFormat](policy)
-    val obj = converters.convertEx[StdPolicy](json)
+    val json = policy.toJsonString
+    val obj = PolicyModel.fromJsonString(json)
+
+    println(json)
 
     assert(policy == obj)
   }