static function getCostBenefit(&$cvmp) { if (!isset($cvmp[OC_TMP]['cb'])) { $candBen = Qualifiers::getBenefit($cvmp); $realBen = Qualifiers::getBenefit(Cache::$realCvmp); $cvmp[OC_TMP]['benefit'] = $candBen - $realBen; $cvmp[OC_TMP]['cb'] = ($candBen - $realBen) / Costs::getCost($cvmp); } return $cvmp[OC_TMP]['cb']; }
public function setUp() { foreach (Costs::getClasses() as $class) { Costs::del($class); } foreach (Qualifiers::getClasses() as $class) { Qualifiers::del($class); } foreach (RulesFreeOfContext::getClasses() as $class) { RulesFreeOfContext::del($class); } foreach (RulesSensitiveToTheContext::getClasses() as $class) { RulesSensitiveToTheContext::del($class); } }
static final function _evaluate(&$cvmp) { $class = get_called_class(); $evaluation = $class::evaluate($cvmp); //TODO test values > 0 & <=2 //Testing is Value is an array if (!is_array($evaluation)) { Qualifiers::del($class); throw new Exception("Evaluations sent from class '{$class}' is not an Array. Class Removed.", 1); } $return = []; //Selecting just the vms evaluations, cutting possible garbage foreach ($cvmp['vmp'] as $vm => $pm) { $return[$vm] = isset($evaluation[$vm]) ? $evaluation[$vm] : 1; unset($evaluation[$vm]); } //Informing about the garbage found if (count($evaluation) > 0) { Qualifiers::del($class); throw new Exception("Class '{$class}' is putting crap in the evaluation result: \n" . print_r($evaluation, true), 1); } return $return; }
public function handlerStatus() { $fmt = 'Class[%s] %s[%s]'; error_log("\nCosts:"); error_log("Main Cost Class[" . Costs::getMainCost() . ']'); foreach (Costs::getClasses() as $class) { error_log(sprintf($fmt, $class, 'Cost', $class::getMaxCost())); } error_log("\nQualifiers:"); foreach (Qualifiers::getClasses() as $class) { error_log(sprintf($fmt, $class, 'Weight', $class::getWeight())); } error_log("\nRules Free Of Context:"); foreach (RulesFreeOfContext::getClasses() as $class) { error_log(sprintf($fmt, $class, 'isValid', $class::isEnable())); } error_log("\nRules Sensitive To The Context:"); foreach (RulesSensitiveToTheContext::getClasses() as $class) { error_log(sprintf($fmt, $class, 'isValid', $class::isEnable())); } echo PHP_EOL; }
public function testLoadClasses() { Qualifiers::add('QUAincomplete'); Cache::$cache->delete('load_test'); $places = ['v1' => 'p1', 'v2' => 'p1', 'v3' => 'p2', 'v4' => 'p2', 'v5' => 'p3']; $cvmp0 = Cvmp::buildCVmpByPlacements($places); $this->assertFalse(Cache::$cache->get('load_test')); $oc = new OrderCloud($cvmp0); $this->assertTrue(Cache::$cache->get('load_test')); }
/** * @depends testIdentifyFakeEvaluate * @expectedException Exception **/ public function testIncompleteAndCrapEvaluations() { Qualifiers::add('QUAincomplete'); $places = ['v1' => 'p1', 'v2' => 'p1', 'v3' => 'p2', 'v4' => 'p2', 'v5' => 'p3']; $cvmp = Cvmp::buildCVmpByPlacements($places); $evals = @Qualifiers::getEvaluation($cvmp); $this->assertEquals(2, $evals['v1'], "Value !match"); unset($evals['v1']); foreach ($evals as $vm => $eval) { $this->assertEquals(1, $eval, "Value of '{$vm}' !match"); } }