コード例 #1
1
 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'];
 }
コード例 #2
1
ファイル: CostsTest.php プロジェクト: arthurd2/order-at-cloud
 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);
     }
 }
コード例 #3
1
ファイル: Qualifier.php プロジェクト: arthurd2/order-at-cloud
 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;
 }
コード例 #4
1
 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;
 }
コード例 #5
1
 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'));
 }
コード例 #6
1
 /**
  * @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");
     }
 }