import gr.grnet.aquarium.util.date.MutableDateCalc
import gr.grnet.aquarium.logic.accounting.dsl._
import gr.grnet.aquarium.logic.accounting.{Policy, Accounting}
-import gr.grnet.aquarium.util.{Loggable, ContextualLogger, justForSure}
+import gr.grnet.aquarium.util.{Loggable, ContextualLogger}
import gr.grnet.aquarium.simulation._
import gr.grnet.aquarium.uid.{UIDGenerator, ConcurrentVMLocalUIDGenerator}
-import com.ckkloverdos.maybe.{Maybe, Just, NoVal}
+import com.ckkloverdos.maybe.{Maybe, Just}
import org.junit.{Assert, Ignore, Test}
-import gr.grnet.aquarium.logic.accounting.algorithm.{ExecutableCostPolicyAlgorithm, CostPolicyAlgorithmCompiler, SimpleCostPolicyAlgorithmCompiler}
-import gr.grnet.aquarium.{AquariumException, Configurator}
+import gr.grnet.aquarium.logic.accounting.algorithm.{ExecutableCostPolicyAlgorithm, CostPolicyAlgorithmCompiler}
+import gr.grnet.aquarium.{AquariumException}
+import gr.grnet.aquarium.Aquarium.{Instance ⇒ AquariumInstance}
+import gr.grnet.aquarium.computation.{UserState, BillingMonthInfo, UserStateComputations}
+import gr.grnet.aquarium.computation.reason.MonthlyBillingCalculation
+import org.apache.ivy.util.Configurator
/**
@inline private[this]
def hrs(millis: Double) = millis / 1000 / 60 / 60
- def apply(vars: Map[DSLCostPolicyVar, Any]): Maybe[Double] = Maybe {
+ def apply(vars: Map[DSLCostPolicyVar, Any]): Double = {
vars.apply(DSLCostPolicyNameVar) match {
case DSLCostPolicyNames.continuous ⇒
val unitPrice = vars(DSLUnitPriceVar).asInstanceOf[Double]
}
val DefaultCompiler = new CostPolicyAlgorithmCompiler {
- def compile(definition: String): Maybe[ExecutableCostPolicyAlgorithm] = {
- Just(DefaultAlgorithm)
+ def compile(definition: String): ExecutableCostPolicyAlgorithm = {
+ DefaultAlgorithm
}
}
//val DefaultAlgorithm = justForSure(DefaultCompiler.compile("")).get // hardcoded since we know exactly what this is
val Synnefo = ClientSim("synnefo")(TheUIDGenerator)
val Pithos = ClientSim("pithos" )(TheUIDGenerator)
- val mc = Configurator.MasterConfigurator.withStoreProviderClass(classOf[MemStore])
- Policy.withConfigurator(mc)
- val StoreProvider = mc.storeProvider
+ val aquarium = AquariumInstance.withStoreProviderClass(classOf[MemStore])
+ Policy.withConfigurator(aquarium)
+ val StoreProvider = aquarium.storeProvider
val ResourceEventStore = StoreProvider.resourceEventStore
val StartOfBillingYearDateCalc = new MutableDateCalc(2012, 1, 1)
val UserCKKL = Aquarium.newUser("CKKL", UserCreationDate)
- val InitialUserState = Computations.createInitialUserState(
+ val InitialUserState = UserState.createInitialUserState(
userID = UserCKKL.userId,
userCreationMillis = UserCreationDate.getTime,
isActive = true,
DefaultAccounting,
DefaultCompiler,
MonthlyBillingCalculation(billingMonthInfo),
- Just(clog)
+ Some(clog)
)
}
@Ignore
@Test
def testFullOnOff: Unit = {
- val clog = ContextualLogger.fromOther(NoVal, logger, "testFullOnOff()")
+ val clog = ContextualLogger.fromOther(None, logger, "testFullOnOff()")
clog.begin()
ResourceEventStore.clearResourceEvents()
showResourceEvents(clog)
- val userStateM = doFullMonthlyBilling(clog, BillingMonthInfoJan)
- val userState = justUserState(userStateM)
-
+ val userState = doFullMonthlyBilling(clog, BillingMonthInfoJan)
+
showUserState(clog, userState)
expectCredits(clog, credits, userState)
@Ignore
@Test
def testLonelyON: Unit = {
- val clog = ContextualLogger.fromOther(NoVal, logger, "testLonelyON()")
+ val clog = ContextualLogger.fromOther(None, logger, "testLonelyON()")
clog.begin()
ResourceEventStore.clearResourceEvents()
showResourceEvents(clog)
- val userStateM = doFullMonthlyBilling(clog, BillingMonthInfoJan)
- val userState = justUserState(userStateM)
+ val userState = doFullMonthlyBilling(clog, BillingMonthInfoJan)
showUserState(clog, userState)
// @Ignore
@Test
def testOrphanOFF: Unit = {
- val clog = ContextualLogger.fromOther(NoVal, logger, "testOrphanOFF()")
+ val clog = ContextualLogger.fromOther(None, logger, "testOrphanOFF()")
clog.begin()
ResourceEventStore.clearResourceEvents()
showResourceEvents(clog)
- val userStateM = doFullMonthlyBilling(clog, BillingMonthInfoJan)
- val userState = justUserState(userStateM)
+ val userState = doFullMonthlyBilling(clog, BillingMonthInfoJan)
showUserState(clog, userState)
@Ignore
@Test
def testOne: Unit = {
- val clog = ContextualLogger.fromOther(NoVal, logger, "testOne()")
+ val clog = ContextualLogger.fromOther(None, logger, "testOne()")
clog.begin()
// Let's create our dates of interest
clog.debugMap("DefaultResourcesMap", DefaultResourcesMap.map, 1)
- val userStateM = doFullMonthlyBilling(clog, BillingMonthInfoJan)
- val userState = justUserState(userStateM)
+ val userState = doFullMonthlyBilling(clog, BillingMonthInfoJan)
+
showUserState(clog, userState)
clog.end()