createCluster($clusterName, $version, $state); assert(is_array($result) && isset($result["clusterName"])); assert($result["clusterName"] == $clusterName); assert($result["result"] == 0); assert($result["error"] == ""); print "Test Duplicate Cluster Creation Fail\n"; $result = $db->createCluster($clusterName, $version, $state); assert(is_array($result)); assert($result["result"] != 0); assert($result["error"] != ""); // create 2nd cluster $clusterName2 = "TestCluster2"; $version = "1.0.0"; $state = "INSTALL_IN_PROGRESS"; $result = $db->createCluster($clusterName2, $version, $state); assert(is_array($result) && isset($result["clusterName"])); assert($result["clusterName"] == $clusterName2); assert($result["result"] == 0); assert($result["error"] == ""); print "Test setClusterState\n"; $result = $db->setClusterState($clusterName, "INSTALLED"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test getAllClusters\n"; $result = $db->getAllClusters(); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["clusters"]) && count($result["clusters"]) == 2); assert(isset($result["clusters"][$clusterName]) && $result["clusters"][$clusterName]["clusterName"] == $clusterName && $result["clusters"][$clusterName]["version"] == $version && $result["clusters"][$clusterName]["state"] == "INSTALLED"); assert(isset($result["clusters"][$clusterName2]) && $result["clusters"][$clusterName2]["clusterName"] == $clusterName2 && $result["clusters"][$clusterName2]["version"] == $version && $result["clusters"][$clusterName2]["state"] == "INSTALL_IN_PROGRESS"); print "Test addHostsToCluster\n"; $hosts = array ( array ( "hostName" => "localhost1", "ip" => "127.0.0.1", "totalMem" => 64, "cpuCount" => 4, "osArch" => "i386", "osType" => "RHEL5", "os" => "RHEL5 32-bit", "disksInfo" => "foo", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error", "attributes" => array ( "foo" => "bar" ) ), array ( "hostName" => "localhost2", "ip" => "127.0.0.2", "totalMem" => 32, "cpuCount" => 8, "osArch" => "x86_64", "osType" => "RHEL6", "os" => "RHEL6 64-bit", "disksInfo" => "bar", "discoveryStatus" => "error", "badHealthReason" => "invalid ssh key" ) ); $result = $db->addHostsToCluster($clusterName, $hosts); assert(is_array($result)); assert($result["clusterName"] == $clusterName); assert($result["result"] == 0); assert($result["error"] == ""); assert(count($result["hosts"]) == 2); assert(in_array("localhost1", $result["hosts"])); assert(in_array("localhost2", $result["hosts"])); $hosts2 = array ( array ( "hostName" => "localhost3", "ip" => "127.0.0.3", "totalMem" => 640, "cpuCount" => 4, "osArch" => "i386", "osType" => "RHEL5", "os" => "RHEL5 32-bit", "disksInfo" => "foo", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error" ) ); $result = $db->addHostsToCluster($clusterName2, $hosts2); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["clusterName"] == $clusterName2); assert(count($result["hosts"]) == 1); assert(in_array("localhost3", $result["hosts"])); print "Test updateHostDiscoveryStatus\n"; $updateHostInfo = array ( "localhost3" => array ( "discoveryStatus" => "error", "badHealthReason" => "foo bar")); $result = $db->updateHostDiscoveryStatus($clusterName2, $updateHostInfo); assert($result["result"] == 0); assert($result["error"] == ""); $hostName = "localhost3"; $result = $db->getHostInfo($clusterName2, $hostName); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["discoveryStatus"] == "error"); assert($result["badHealthReason"] == "foo bar"); print "Test getHostInfo\n"; $result = $db->getHostInfo($clusterName, "localhost_does_not_exist"); assert($result["result"] != 0); assert($result["error"] != ""); $hostName = "localhost1"; $result = $db->getHostInfo($clusterName, $hostName); assert($result["result"] == 0); assert($result["error"] == ""); unset($result["result"]); unset($result["error"]); unset($result["clusterName"]); foreach ($result as $key=>$val) { assert(array_key_exists($key, $result)); assert($val == $result[$key]); } assert(is_array($result["attributes"]) && $result["attributes"]["foo"] == "bar"); print "Test getAllHostsInfo\n"; $result = $db->getAllHostsInfo($clusterName, "", ""); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result) && is_array($result["hosts"]) && count($result["hosts"]) == 2); foreach ($result["hosts"] as $tmpHost) { assert(is_array($tmpHost["attributes"])); } print "Test getAllHostsInfo with filter\n"; $result = $db->getAllHostsInfo($clusterName, array ( "=" => array ( "discoveryStatus" => "error")), ""); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result) && is_array($result["hosts"]) && count($result["hosts"]) == 1); assert($result["hosts"][0]["ip"] == "127.0.0.2"); $result = $db->getAllHostsInfo($clusterName, array ( "!=" => array ( "discoveryStatus" => "errorfoo")), ""); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result) && is_array($result["hosts"]) && count($result["hosts"]) == 2); $result = $db->getAllHostsInfo($clusterName, "", array("sortColumn" => "totalMem", "sortOrder" => "DESC")); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result) && is_array($result["hosts"]) && count($result["hosts"]) == 2); assert($result["hosts"][0]["hostName"] == "localhost1" && $result["hosts"][1]["hostName"] == "localhost2"); foreach ($hosts[0] as $key=>$val) { assert(array_key_exists($key, $result["hosts"][0])); assert($val == $result["hosts"][0][$key]); } $result = $db->getAllHostsInfo($clusterName, "", array("sortColumn" => "totalMem", "sortOrder" => "ASC")); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result) && is_array($result["hosts"]) && count($result["hosts"]) == 2); assert($result["hosts"][0]["hostName"] == "localhost2" && $result["hosts"][1]["hostName"] == "localhost1"); print "Test updateServiceConfigs\n"; $serviceName = "HDFS"; $config = array ( "key1" => "val1", "key2" => "val2"); $result = $db->updateServiceConfigs($clusterName, $config); assert($result["result"] == 0); assert($result["error"] == ""); assert(isset($result["sql"]["rowsChanged"]) && $result["sql"]["rowsChanged"] == 2); $result = $db->updateServiceConfigs($clusterName, $config); assert($result["result"] == 0); assert($result["error"] == ""); // TODO /* print "Test getServiceConfig\n"; $result = $db->getServiceConfig($clusterName, $serviceName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["clusterName"] == $clusterName); assert($result["serviceName"] == $serviceName); assert(is_array($result["properties"]) && count($result["properties"]) == 2); assert($result["properties"]["key1"] == "val1" && $result["properties"]["key2"] == "val2"); print "Test updateServiceConfigs\n"; $config = array ( "key1" => "val1", "key2" => "val21", "key3" => "val3"); $result = $db->updateServiceConfigs($clusterName, $serviceName, $config); assert($result["result"] == 0); assert($result["error"] == ""); assert(isset($result["sql"]["rowsChanged"]) && $result["sql"]["rowsChanged"] == 3); $result = $db->getServiceConfig($clusterName, $serviceName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["clusterName"] == $clusterName); assert($result["serviceName"] == $serviceName); assert(is_array($result["properties"]) && count($result["properties"]) == 3); assert($result["properties"]["key1"] == "val1" && $result["properties"]["key2"] == "val21" && $result["properties"]["key3"] == "val3"); print "Test updateServiceConfigs Service2\n"; $serviceName2 = "MAPREDUCE"; $config = array ( "key4" => "val4", "key5" => "val5", "key6" => "val6"); $result = $db->updateServiceConfigs($clusterName, $serviceName2, $config); assert($result["result"] == 0); assert($result["error"] == ""); assert(isset($result["sql"]["rowsChanged"]) && $result["sql"]["rowsChanged"] == 3); print "Test getAllConfigs\n"; $result = $db->getAllConfigs($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["clusterName"] == $clusterName); assert(is_array($result["services"]) && count($result["services"]) == 2); assert(is_array($result["services"][$serviceName]) && is_array($result["services"][$serviceName]["properties"]) && count($result["services"][$serviceName]["properties"]) == 3); assert($result["services"][$serviceName]["properties"]["key1"] == "val1" && $result["services"][$serviceName]["properties"]["key2"] == "val21" && $result["services"][$serviceName]["properties"]["key3"] == "val3"); assert(is_array($result["services"][$serviceName2]) && is_array($result["services"][$serviceName2]["properties"]) && count($result["services"][$serviceName2]["properties"]) == 3); assert($result["services"][$serviceName2]["properties"]["key4"] == "val4" && $result["services"][$serviceName2]["properties"]["key5"] == "val5" && $result["services"][$serviceName2]["properties"]["key6"] == "val6"); */ print "Test getAllServicesList\n"; $result = $db->getAllServicesList(); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["services"]) && count($result["services"]) > 2); assert(is_array($result["services"]["HDFS"])); assert($result["services"]["HDFS"]["serviceName"] == "HDFS"); assert($result["services"]["HDFS"]["displayName"] == "HDFS"); assert($result["services"]["HDFS"]["description"] != ""); print "Test addServicesToCluster\n"; $services = array( array ( "serviceName" => "HDFS", "state" => "INSTALLING", "desiredState" => "INSTALLED", "isEnabled" => TRUE ), array ( "serviceName" => "MAPREDUCE", "isEnabled" => TRUE ), array ( "serviceName" => "HBASE", "isEnabled" => FALSE ), array ( "serviceName" => "PIG" ) ); print "Test addServicesToCluster\n"; $result = $db->addServicesToCluster($clusterName, $services); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test invalid addServicesToCluster\n"; array_push($services, array("serviceName" => "foo")); $result = $db->addServicesToCluster($clusterName, $services); assert(is_array($result)); assert($result["result"] != 0); assert($result["error"] != ""); print "Test getAllServicesInfo\n"; $result = $db->getAllServicesInfo($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["services"])); assert(is_array($result["services"]["HDFS"]) && $result["services"]["HDFS"]["serviceName"] == "HDFS" && $result["services"]["HDFS"]["state"] == "INSTALLING" && $result["services"]["HDFS"]["desiredState"] == "INSTALLED" && $result["services"]["HDFS"]["isEnabled"] == 1); assert(is_array($result["services"]["MAPREDUCE"]) && $result["services"]["MAPREDUCE"]["serviceName"] == "MAPREDUCE" && $result["services"]["MAPREDUCE"]["state"] == "" && $result["services"]["MAPREDUCE"]["desiredState"] == "" && $result["services"]["MAPREDUCE"]["isEnabled"] == 1); assert(is_array($result["services"]["HBASE"]) && $result["services"]["HBASE"]["serviceName"] == "HBASE" && $result["services"]["HBASE"]["state"] == "" && $result["services"]["HBASE"]["desiredState"] == "" && $result["services"]["HBASE"]["isEnabled"] == 0); assert(is_array($result["services"]["PIG"]) && $result["services"]["PIG"]["serviceName"] == "PIG" && $result["services"]["PIG"]["state"] == "" && $result["services"]["PIG"]["desiredState"] == "" && $result["services"]["PIG"]["isEnabled"] == 0); print "Test getAllServiceComponents\n"; $result = $db->getAllServiceComponents("HDFS"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["components"])); assert($result["serviceName"] == "HDFS"); assert(is_array($result["components"]["NAMENODE"]) && $result["components"]["NAMENODE"]["componentName"] == "NAMENODE" && $result["components"]["NAMENODE"]["isMaster"] == true && $result["components"]["NAMENODE"]["isClient"] == false && $result["components"]["NAMENODE"]["displayName"] == "NameNode" && $result["components"]["NAMENODE"]["description"] != ""); assert(is_array($result["components"]["SNAMENODE"]) && $result["components"]["SNAMENODE"]["componentName"] == "SNAMENODE" && $result["components"]["SNAMENODE"]["isMaster"] == true && $result["components"]["SNAMENODE"]["isClient"] == false && $result["components"]["SNAMENODE"]["displayName"] == "Secondary NameNode" && $result["components"]["SNAMENODE"]["description"] != ""); assert(is_array($result["components"]["DATANODE"]) && $result["components"]["DATANODE"]["componentName"] == "DATANODE" && $result["components"]["DATANODE"]["isMaster"] == false && $result["components"]["DATANODE"]["isClient"] == false && $result["components"]["DATANODE"]["displayName"] == "Datanode" && $result["components"]["DATANODE"]["description"] != ""); assert(is_array($result["components"]["HDFS_CLIENT"]) && $result["components"]["HDFS_CLIENT"]["componentName"] == "HDFS_CLIENT" && $result["components"]["HDFS_CLIENT"]["isMaster"] == false && $result["components"]["HDFS_CLIENT"]["isClient"] == true && $result["components"]["HDFS_CLIENT"]["displayName"] == "HDFS Client" && $result["components"]["HDFS_CLIENT"]["description"] != ""); print "Test getServiceInfo\n"; /* /** * Get information related to a service * @param string $clusterName * @param string $serviceName * @return mixed * array ( * "result" => 0, * "error" => "", * "clusterName" => $clusterName, * "serviceName" => $serviceName, * "isEnabled" => $isEnabled, * "state" => $state, * "desiredState" => $desiredState * ) */ $serviceName = "HDFS"; $result = $db->getServiceInfo($clusterName, $serviceName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["serviceName"] == "HDFS" && $result["state"] == "INSTALLING" && $result["desiredState"] == "INSTALLED" && $result["isEnabled"] == 1); print "Test setServiceState\n"; $result = $db->setServiceState($clusterName, $serviceName, "STARTING"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["serviceName"] == "HDFS" && $result["state"] == "STARTING" && $result["oldState"] == "INSTALLING"); print "Test setServiceDesiredState\n"; $result = $db->setServiceDesiredState($clusterName, $serviceName, "STARTED"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["serviceName"] == "HDFS" && $result["desiredState"] == "STARTED" && $result["oldDesiredState"] == "INSTALLED"); print "Test addHostsToComponent\n"; $serviceName = "HDFS"; $componentName = "DATANODE"; $hosts = array ( "localhost1", "localhost2"); $result = $db->addHostsToComponent($clusterName, $componentName, $hosts, "INSTALLING", "INSTALLED"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $cltComp = "HDFS_CLIENT"; $hosts = array ( "localhost1", "localhost2"); $result = $db->addHostsToComponent($clusterName, $cltComp, $hosts, "INSTALLING", "INSTALLED"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->addHostsToComponent($clusterName2, $componentName, array ( "localhost3") , "INSTALLING", "INSTALLED"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test getAllHostsByComponent\n"; $result = $db->getAllHostsByComponent($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["components"])); assert(is_array($result["components"][$componentName])); assert($result["components"][$componentName]["componentName"] == $componentName); assert(is_array($result["components"][$componentName]["hosts"]) && count($result["components"][$componentName]["hosts"]) == 2); assert(is_array($result["components"][$componentName]["hosts"]["localhost1"]) && is_array($result["components"][$componentName]["hosts"]["localhost2"])); print "Test getHostsForComponent\n"; $result = $db->getHostsForComponent($clusterName, $componentName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["hosts"]) && count($result["hosts"]) == 2); assert(is_array($result["hosts"]["localhost1"]) && is_array($result["hosts"]["localhost2"])); print "Test getAllServiceComponentsList\n"; $result = $db->getAllServiceComponentsList(); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["services"]) && count($result["services"]) >= 2 && is_array($result["services"]["HDFS"]) && is_array($result["services"]["MAPREDUCE"])); foreach ($result["services"] as $serviceNm => $service) { assert(isset($service["serviceName"]) && $service["serviceName"] == $serviceNm && is_array($service["components"]) && count($service["components"]) >= 1); foreach ($service["components"] as $compName => $comp) { assert(isset($comp["serviceName"]) && $comp["serviceName"] == $serviceNm && $comp["componentName"] == $compName && isset($comp["isMaster"]) && isset($comp["isClient"]) && isset($comp["displayName"])); } if ($serviceNm == "ZOOKEEPER") { assert(count($service["components"]) == 2); assert(isset($service["components"]["ZOOKEEPER_SERVER"]) && is_array($service["components"]["ZOOKEEPER_SERVER"]) && $service["components"]["ZOOKEEPER_SERVER"]["isMaster"] == true && $service["components"]["ZOOKEEPER_SERVER"]["isClient"] == false && $service["components"]["ZOOKEEPER_SERVER"]["displayName"] == "ZooKeeper Server"); assert(isset($service["components"]["ZOOKEEPER_CLIENT"]) && is_array($service["components"]["ZOOKEEPER_CLIENT"]) && $service["components"]["ZOOKEEPER_CLIENT"]["isMaster"] == false && $service["components"]["ZOOKEEPER_CLIENT"]["isClient"] == true && $service["components"]["ZOOKEEPER_CLIENT"]["displayName"] == "ZooKeeper Client"); } } print "Test setHostsStateForComponent\n"; $componentName = "DATANODE"; $hostArray = array ( "localhost1", "localhost2", "localhost3" ); $result = $db->setHostsStateForComponent($clusterName, $componentName, $hostArray, "UNINSTALLING"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->getHostsForComponent($clusterName, $componentName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["hosts"]) && count($result["hosts"]) == 2); assert(is_array($result["hosts"]["localhost1"]) && is_array($result["hosts"]["localhost2"])); assert($result["hosts"]["localhost1"]["state"] == "UNINSTALLING"); assert($result["hosts"]["localhost2"]["state"] == "UNINSTALLING"); $result = $db->getHostsForComponent($clusterName2, $componentName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["hosts"]) && count($result["hosts"]) == 1); assert(is_array($result["hosts"]["localhost3"]) && $result["hosts"]["localhost3"]["state"] != "UNINSTALLING"); print "Test setHostsDesiredStateForComponent\n"; $componentName = "DATANODE"; $hostArray = array ( "localhost1" ); $result = $db->setHostsStateForComponent($clusterName, $componentName, $hostArray, "UNINSTALLED"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->getHostsForComponent($clusterName, $componentName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["hosts"]) && count($result["hosts"]) == 2); assert(is_array($result["hosts"]["localhost1"]) && is_array($result["hosts"]["localhost2"])); assert($result["hosts"]["localhost1"]["state"] == "UNINSTALLED"); assert($result["hosts"]["localhost2"]["state"] != "UNINSTALLED"); print "Test getServiceDependencies\n"; $result = $db->getServiceDependencies("HBASE"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["serviceName"] == "HBASE"); assert(is_array($result["serviceDependencies"]) && array_search("HDFS", $result["serviceDependencies"]) !== FALSE && array_search("ZOOKEEPER", $result["serviceDependencies"]) !== FALSE); print "Test getServiceDependents\n"; $result = $db->getServiceDependents("HDFS"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["serviceName"] == "HDFS"); assert(is_array($result["serviceDependents"]) && array_search("HBASE", $result["serviceDependents"]) !== FALSE && array_search("MAPREDUCE", $result["serviceDependents"]) !== FALSE); print "Test getServiceComponentDependencies\n"; $result = $db->getServiceComponentDependencies("DATANODE"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["componentName"] == "DATANODE"); assert(is_array($result["componentDependencies"]) && array_search("NAMENODE", $result["componentDependencies"]) !== FALSE); print "Test getServiceComponentDependents\n"; $result = $db->getServiceComponentDependents("NAMENODE"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["componentName"] == "NAMENODE"); assert(is_array($result["componentDependents"]) && array_search("DATANODE", $result["componentDependents"]) !== FALSE && array_search("SNAMENODE", $result["componentDependents"]) !== FALSE); print "Test addServiceComponentsToCluster\n"; $comps = array ( "HDFS" => array ( "DATANODE" => array ( "state" => "STARTING", "desiredState" => "STARTED" ), "HDFS_CLIENT" => array ( "state" => "INSTALLING", "desiredState" => "INSTALLED"), ), "MAPREDUCE" => array ( "JOBTRACKER" => array ( "state" => "INSTALLED", "desiredState" => "INSTALLED" ), "TASKTRACKER" => array ( "state" => "INSTALLED", "desiredState" => "INSTALLED" ) ) ); $result = $db->addServiceComponentsToCluster($clusterName, $comps); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test getAllServiceComponentsInfo\n"; $result = $db->getAllServiceComponentsInfo($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["services"])); foreach ($comps as $svc => $svccomps) { assert (isset($result["services"][$svc]) && is_array($result["services"][$svc]) && is_array($result["services"][$svc]["components"])); foreach ($svccomps as $compName => $comp) { assert (is_array($result["services"][$svc]["components"][$compName]) && $result["services"][$svc]["components"][$compName]["state"] == $comp["state"] && $result["services"][$svc]["components"] [$compName]["desiredState"] == $comp["desiredState"]); } } print "Test setServiceComponentState\n"; $componentName = "DATANODE"; $result = $db->setServiceComponentState($clusterName, $componentName, "INVALID_STATE", TRUE); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->getAllServiceComponentsInfo($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $svc = "HDFS"; $compName = "DATANODE"; assert($result["services"][$svc]["components"][$compName]["state"] == "INVALID_STATE"); // verify host state updated too $result = $db->getHostsForComponent($clusterName, $componentName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["hosts"]) && count($result["hosts"]) == 2); assert(is_array($result["hosts"]["localhost1"]) && is_array($result["hosts"]["localhost2"])); assert($result["hosts"]["localhost1"]["state"] == "INVALID_STATE"); assert($result["hosts"]["localhost2"]["state"] == "INVALID_STATE"); print "Test setServiceComponentDesiredState\n"; $result = $db->setServiceComponentDesiredState($clusterName, $componentName, "INVALID STATE", FALSE); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->getAllServiceComponentsInfo($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $svc = "HDFS"; $compName = "DATANODE"; assert($result["services"][$svc]["components"][$compName]["state"] == "INVALID_STATE"); assert($result["services"][$svc]["components"][$compName]["desiredState"] == "INVALID STATE"); // verify host desired state not update $result = $db->getHostsForComponent($clusterName, $componentName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["hosts"]) && count($result["hosts"]) == 2); assert(is_array($result["hosts"]["localhost1"]) && is_array($result["hosts"]["localhost2"])); assert($result["hosts"]["localhost1"]["desiredState"] != "INVALID STATE"); assert($result["hosts"]["localhost2"]["desiredState"] != "INVALID STATE"); print "Test createNewTransaction\n"; $result = $db->createNewTransaction($clusterName, "Status", "Pid"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["txnId"] == 1); print "Test getTransactionStatusInfo\n"; $curTime = time(); $txnId = $result["txnId"]; $result = $db->getTransactionStatusInfo($clusterName, $txnId); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["txnId"] == $txnId); assert(($result["createTime"]+600) > $curTime); assert($result["pidInfo"] == "Pid"); assert($result["statusInfo"] == "Status"); print "Test updateTransactionStatusInfo\n"; $result = $db->updateTransactionStatusInfo($clusterName, $txnId, "New Status"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["sql"]["rowsChanged"] != 0); $result = $db->getTransactionStatusInfo($clusterName, $txnId); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["txnId"] == $txnId); assert($result["pidInfo"] == "Pid"); assert($result["statusInfo"] == "New Status"); print "Test updateTransactionPidInfo\n"; $result = $db->updateTransactionPidInfo($clusterName, $txnId, "New Pid"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["sql"]["rowsChanged"] != 0); $result = $db->getTransactionStatusInfo($clusterName, $txnId); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["txnId"] == $txnId); assert($result["pidInfo"] == "New Pid"); assert($result["statusInfo"] == "New Status"); print "Test insertOrUpdateSubTransaction - Insert only\n"; $subTxnId = 1; $parentSubTxnId = 0; $state = "foo1"; $description = "desc1"; $progress = "bar1"; $subTxnType = "type1"; $result = $db->insertOrUpdateSubTransaction($clusterName, $txnId, $subTxnId, $parentSubTxnId, $state, $description, $progress, $subTxnType); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $subTxnId = 2; $parentSubTxnId = 0; $state = "foo2"; $description = "desc2"; $result = $db->insertOrUpdateSubTransaction($clusterName, $txnId, $subTxnId, $parentSubTxnId, $state, $description, $progress, $subTxnType); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test getAllSubTransactionsInfo\n"; $result = $db->getAllSubTransactionsInfo($clusterName, $txnId); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["subTxns"]) && count($result["subTxns"]) == 2); $found = 0; foreach ($result["subTxns"] as $subTxnId => $subTxn) { if ($subTxn["subTxnId"] == 1 && $subTxn["parentSubTxnId"] == 0 && $subTxn["state"] == "foo1" && $subTxn["description"] == "desc1" && $subTxn["progress"] == $progress && $subTxn["subTxnType"] == $subTxnType && $subTxn["opStatus"] == "[]") { ++$found; } else if ($subTxn["subTxnId"] == 2 && $subTxn["parentSubTxnId"] == 0 && $subTxn["state"] == "foo2" && $subTxn["description"] == "desc2" && $subTxn["progress"] == $progress && $subTxn["subTxnType"] == $subTxnType && $subTxn["opStatus"] == "[]") { ++$found; } } assert ($found == 2); print "Test updateSubTransactionOpStatus\n"; $result = $db->updateSubTransactionOpStatus($clusterName, 1, 2, "Op Status"); print "Test insertOrUpdateSubTransaction - Update\n"; $subTxnId = 2; $parentSubTxnId = 1; $state = "foo2_1"; $description = "desc2_1"; $result = $db->insertOrUpdateSubTransaction($clusterName, $txnId, $subTxnId, $parentSubTxnId, $state, $description, $progress, $subTxnType); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->getAllSubTransactionsInfo($clusterName, $txnId); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["subTxns"]) && count($result["subTxns"]) == 2); $found = 0; foreach ($result["subTxns"] as $subTxnId => $subTxn) { if ($subTxn["subTxnId"] == 1 && $subTxn["parentSubTxnId"] == 0 && $subTxn["state"] == "foo1" && $subTxn["description"] == "desc1" && $subTxn["opStatus"] == "[]") { ++$found; } else if ($subTxn["subTxnId"] == 2 && $subTxn["parentSubTxnId"] == 1 && $subTxn["state"] == "foo2_1" && $subTxn["description"] == "desc2_1" && $subTxn["opStatus"] == "Op Status") { ++$found; } } assert ($found == 2); print "Test OrchestratorDB\n"; $puppet = ""; $odb = new OrchestratorDB($dbPath, $clusterName, $puppet); print "Test getClusterServices\n"; $result = $odb->getClusterServices(); assert(count($result) == 2); $found = 0; foreach ($result as $svc) { if ($svc->name == "HDFS" || $svc->name == "MAPREDUCE") { ++$found; } } assert($found == 2); print "Test getServiceDependencies\n"; $result = $odb->getServiceDependencies("MAPREDUCE"); assert(count($result) == 1); assert($result[0]->name == "HDFS"); print "Test getServiceDependents\n"; $result = $odb->getServiceDependents("HDFS"); assert(count($result) == 1); assert($result[0]->name == "MAPREDUCE"); print "Test getServiceComponents\n"; $result = $odb->getServiceComponents("HDFS"); $found = 0; foreach ($result as $comp) { if ($comp->name == "NAMENODE" || $comp->name == "SNAMENODE" || $comp->name == "HDFS_CLIENT" || $comp->name == "DATANODE") { ++$found; } } assert(count($result) == 2); assert($found == 2); print "Test getComponentDependencies\n"; $result = $odb->getComponentDependencies("MAPREDUCE", "TASKTRACKER"); assert(count($result) == 1); assert($result[0]->name == "JOBTRACKER"); print "Test getAllNodes\n"; $result = $odb->getAllNodes(); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["componentMapping"])); assert(is_array($result["nodes"]) && count($result["nodes"]) == 1); assert($result["nodes"][0] == "localhost1"); print "Test getComponentNodes\n"; $svcCompObj = new ServiceComponent($clusterName, "DATANODE", "HDFS", "", $odb, $puppet, FALSE, "Datanode"); $result = $odb->getComponentNodes($svcCompObj); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["nodes"]) && count($result["nodes"]) == 2); assert($result["nodes"][0] == "localhost1" || $result["nodes"][0] == "localhost2"); assert($result["nodes"][1] == "localhost1" || $result["nodes"][1] == "localhost2"); print "Test setServiceState\n"; $svcObj = new Service($clusterName, "HDFS", 0, $odb, $puppet, "HDFS"); $result = $odb->setServiceState($svcObj, 1); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test setServiceComponentState\n"; $result = $odb->setServiceComponentState($svcObj->name, $svcCompObj->name, 2); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test persistTransaction\n"; $txnId = 1; $subTxnId = 1; $parentSubTxnId = 0; $transaction = new Transaction($txnId, $subTxnId, $parentSubTxnId); $result = $odb->persistTransaction($transaction, "UNINSTALLED", "NO STATE", "PENDING", "TYPE1", FALSE); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test getServiceClientNode\n"; $result = $odb->getServiceClientNode("HDFS"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["nodes"]) && count($result["nodes"]) == 2); print "Test getRolesByHost\n"; $result = $db->getRolesForHosts($clusterName, array("localhost1", "localhost2")); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["hosts"]["localhost1"]["services"])); assert(is_array($result["hosts"]["localhost1"]["services"]["HDFS"]) && is_array($result["hosts"]["localhost1"]["services"]["HDFS"]["components"]) && count($result["hosts"]["localhost1"]["services"]["HDFS"]["components"]) == 2); foreach ($result["hosts"]["localhost1"]["services"]["HDFS"]["components"] as $cmpNm => $cmpCheck) { assert($cmpCheck["componentName"] == $cmpNm); assert(isset($cmpCheck["state"])); assert(isset($cmpCheck["desiredState"])); } assert($result["hosts"]["localhost1"]["services"]["HDFS"]["components"]["HDFS_CLIENT"]["state"] == "INSTALLING"); assert($result["hosts"]["localhost1"]["services"]["HDFS"]["components"]["HDFS_CLIENT"]["desiredState"] == "INSTALLED"); print "Test getNodeServices\n"; $result = $odb->getNodeServices("localhost1"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["services"]) && count($result["services"]) == 1); assert($result["services"][0]->name == "HDFS"); print "Test getAllServiceDependencies\n"; $result = $db->getAllServiceDependencies(); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["serviceDependencies"]) && count($result["serviceDependencies"]) > 5); print "Test getRecursiveServiceDependency\n"; $result = $db->getRecursiveServiceDependency($result["serviceDependencies"], "HIVE"); assert(is_array($result) && count($result) == 2 && in_array("HDFS", $result) && in_array("MAPREDUCE", $result)); print "Test setHostsState\n"; $hostsToUpdate = array ( "HDFS" => array ( "DATANODE" => array ( "localhost1"), "HDFS_CLIENT" => array ( "localhost1", "localhost2") ) ); $result = $db->setHostsState($clusterName, $hostsToUpdate, "FOO"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["sql"]["rowsChanged"] == 3); $result = $db->getAllHostsByComponent($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["components"]["DATANODE"]["hosts"]["localhost1"]["state"] == "FOO"); assert($result["components"]["DATANODE"]["hosts"]["localhost2"]["state"] != "FOO"); assert($result["components"]["HDFS_CLIENT"]["hosts"]["localhost1"]["state"] == "FOO"); assert($result["components"]["HDFS_CLIENT"]["hosts"]["localhost2"]["state"] == "FOO"); print "Test setHostsDesiredState\n"; $result = $db->setHostsDesiredState($clusterName, $hostsToUpdate, "BAR"); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["sql"]["rowsChanged"] == 3); $result = $db->getAllHostsByComponent($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["components"]["DATANODE"]["hosts"]["localhost1"]["desiredState"] == "BAR"); assert($result["components"]["DATANODE"]["hosts"]["localhost2"]["desiredState"] != "BAR"); assert($result["components"]["HDFS_CLIENT"]["hosts"]["localhost1"]["desiredState"] == "BAR"); assert($result["components"]["HDFS_CLIENT"]["hosts"]["localhost2"]["desiredState"] == "BAR"); $hostsToUpdate = array ( "HDFS" => array ( "DATANODE" => array ( "localhost1"), "HDFS_CLIENT" => array ( "localhost1") ) ); $result = $db->matchHostStateToComponent($clusterName, $hostsToUpdate); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->matchHostDesiredStateToComponent($clusterName, $hostsToUpdate); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->getAllHostsByComponent($clusterName); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["components"]["DATANODE"]["hosts"]["localhost1"]["state"] != "FOO"); assert($result["components"]["HDFS_CLIENT"]["hosts"]["localhost1"]["state"] != "FOO"); assert($result["components"]["DATANODE"]["hosts"]["localhost1"]["desiredState"] != "BAR"); assert($result["components"]["HDFS_CLIENT"]["hosts"]["localhost1"]["desiredState"] != "BAR"); $hostsToUpdate = array ( "HDFS" => array ( "DATANODE" => array ( "localhost1", "localhost2"), "HDFS_CLIENT" => array ( "localhost1", "localhost2") ) ); $result = $db->matchHostStateToComponent($clusterName, $hostsToUpdate); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->matchHostDesiredStateToComponent($clusterName, $hostsToUpdate); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); print "Test getNodeRolesAndState\n"; $result = $odb->getNodeRolesAndState($hosts); assert(is_array($result)); assert($result["result"] == 0); assert($result["error"] == ""); assert(isset($result["hosts"]["localhost1"]["services"]["HDFS"]["components"]["DATANODE"]["state"])); assert(isset($result["hosts"]["localhost1"]["services"]["HDFS"]["components"]["HDFS_CLIENT"]["state"])); assert(isset($result["hosts"]["localhost2"]["services"]["HDFS"]["components"]["DATANODE"]["state"])); assert(isset($result["hosts"]["localhost2"]["services"]["HDFS"]["components"]["HDFS_CLIENT"]["state"])); print "Test createServiceConfigSnapshot\n"; $result = $db->createServiceConfigSnapshot($clusterName, "Test snapshot"); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["configSnapshotId"] > 0); print "Test getConfigSnapshot\n"; $configSnapshotId = $result["configSnapshotId"]; $result = $db->getConfigSnapshot($clusterName, $configSnapshotId); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["configSnapshotId"] == $configSnapshotId); assert($result["changeLog"] == "Test snapshot"); assert(is_array($result["config"]["properties"]) && count($result["config"]["properties"]) > 0); assert($result["updateTime"] >= time()); print "Test updateHostRoleConfigs\n"; $hostConfigs = array ( "ZOOKEEPER_SERVER" => array ( "localhost1" => array ( "zookeeper_quorum_id" => 1, "test_id" => 1), "localhost2" => array ( "zookeeper_quorum_id" => 1) ), "ZOOKEEPER_CLIENT" => array ( "localhost1" => array ( "zookeeper_quorum_id" => 1, "test_id" => 1), "localhost2" => array ( "zookeeper_quorum_id" => 1) )); $result = $db->updateHostRoleConfigs($clusterName, $hostConfigs); assert($result["result"] == 0); assert($result["error"] == ""); assert(isset($result["sql"]["rowsChanged"]) && $result["sql"]["rowsChanged"] == 6); $result = $db->updateHostRoleConfigs($clusterName, $hostConfigs); assert($result["result"] == 0); assert($result["error"] == ""); $hostConfigs = array ( "ZOOKEEPER_SERVER" => array ( "localhost1" => array ( "zookeeper_quorum_id" => 1, "test_id" => 1), "localhost2" => array ( "zookeeper_quorum_id" => 2) ), "ZOOKEEPER_CLIENT" => array ( "localhost1" => array ( "zookeeper_quorum_id" => 1, "test_id" => 1), "localhost2" => array ( "zookeeper_quorum_id" => 2) )); $result = $db->updateHostRoleConfigs($clusterName, $hostConfigs); assert($result["result"] == 0); assert($result["error"] == ""); print "Test getHostRoleConfigs\n"; $result = $db->getHostRoleConfigs($clusterName); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["properties"] == $hostConfigs); $result = $db->getHostRoleConfigs($clusterName, "ZOOKEEPER_SERVER"); assert($result["result"] == 0); assert($result["error"] == ""); assert($result["properties"] != $hostConfigs); assert($result["properties"]["ZOOKEEPER_SERVER"] == $hostConfigs["ZOOKEEPER_SERVER"]); print "Test getConfigPropertiesMetaInfo\n"; $result = $db->getConfigPropertiesMetaInfo(); assert($result["result"] == 0); assert($result["error"] == ""); assert(is_array($result["configs"])); foreach ($result["configs"] as $key => $info) { assert($info["key"] == $key); assert(isset($info["displayName"])); assert(isset($info["serviceName"])); assert(isset($info["description"])); assert(isset($info["displayType"])); assert(isset($info["value"])); assert(is_array($info["displayAttributes"])); } print "Test getAllUnassignedHosts\n"; $result = $db->getAllHostsInfo("", "", ""); assert($result["result"] == 0); assert($result["error"] == ""); assert(count($result["hosts"]) == 3); $hostsToAdd = array ( array ( "hostName" => "localhost4", "ip" => "127.0.0.4", "totalMem" => 64, "cpuCount" => 4, "osArch" => "i386", "osType" => "RHEL5", "os" => "RHEL5 32-bit", "disksInfo" => "foo", "discoveryStatus" => "SUCCESS", "badHealthReason" => "no error", "attributes" => array ( "foo" => "bar" ) ), array ( "hostName" => "localhost5", "ip" => "127.0.0.5", "totalMem" => 32, "cpuCount" => 8, "osArch" => "x86_64", "osType" => "RHEL6", "os" => "RHEL6 64-bit", "disksInfo" => "bar", "discoveryStatus" => "error", "badHealthReason" => "invalid ssh key" ) ); $result = $db->addHostsToCluster($clusterName, $hostsToAdd); assert(is_array($result)); assert($result["clusterName"] == $clusterName); assert($result["result"] == 0); assert($result["error"] == ""); $result = $db->getAllUnassignedHosts($clusterName); assert(is_array($result)); assert($result["clusterName"] == $clusterName); assert($result["result"] == 0); assert($result["error"] == ""); assert(count($result["hosts"]) == 1); assert($result["hosts"][0]["hostName"] == $hostsToAdd[0]["hostName"]); ?>