2
0

CloudWatchTest.php 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. require_once 'PHPUnit/Framework/TestCase.php';
  3. require_once 'Zend/Service/Amazon/Ec2/CloudWatch.php';
  4. require_once 'Zend/Http/Client.php';
  5. require_once 'Zend/Http/Client/Adapter/Test.php';
  6. /**
  7. * Zend_Service_Amazon_Ec2_CloudWatch test case.
  8. */
  9. class Zend_Service_Amazon_Ec2_CloudWatchTest extends PHPUnit_Framework_TestCase
  10. {
  11. /**
  12. * @var Zend_Service_Amazon_Ec2_CloudWatch
  13. */
  14. private $Zend_Service_Amazon_Ec2_CloudWatch;
  15. /**
  16. * Prepares the environment before running a test.
  17. */
  18. protected function setUp()
  19. {
  20. parent::setUp();
  21. $this->Zend_Service_Amazon_Ec2_CloudWatch = new Zend_Service_Amazon_Ec2_CloudWatch('access_key', 'secret_access_key');
  22. $adapter = new Zend_Http_Client_Adapter_Test();
  23. $client = new Zend_Http_Client(null, array(
  24. 'adapter' => $adapter
  25. ));
  26. $this->adapter = $adapter;
  27. Zend_Service_Amazon_Ec2_CloudWatch::setHttpClient($client);
  28. }
  29. /**
  30. * Cleans up the environment after running a test.
  31. */
  32. protected function tearDown()
  33. {
  34. unset($this->adapter);
  35. $this->Zend_Service_Amazon_Ec2_CloudWatch = null;
  36. parent::tearDown();
  37. }
  38. /**
  39. * Tests Zend_Service_Amazon_Ec2_CloudWatch->getMetricStatistics()
  40. */
  41. public function testGetMetricStatistics()
  42. {
  43. $rawHttpResponse = "HTTP/1.1 200 OK\r\n"
  44. . "Date: Fri, 24 Oct 2008 17:24:52 GMT\r\n"
  45. . "Server: hi\r\n"
  46. . "Last-modified: Fri, 24 Oct 2008 17:24:52 GMT\r\n"
  47. . "Status: 200 OK\r\n"
  48. . "Content-type: application/xml; charset=utf-8\r\n"
  49. . "Expires: Tue, 31 Mar 1981 05:00:00 GMT\r\n"
  50. . "Connection: close\r\n"
  51. . "\r\n"
  52. ."<GetMetricStatisticsResponse xmlns=\"http://monitoring.amazonaws.com/doc/2009-05-15/\">\r\n"
  53. ." <GetMetricStatisticsResult>\r\n"
  54. ." <Datapoints>\r\n"
  55. ." <member>\r\n"
  56. ." <Timestamp>2009-06-16T23:57:00Z</Timestamp>\r\n"
  57. ." <Unit>Bytes</Unit>\r\n"
  58. ." <Samples>1.0</Samples>\r\n"
  59. ." <Average>14838.0</Average>\r\n"
  60. ." </member>\r\n"
  61. ." <member>\r\n"
  62. ." <Timestamp>2009-06-17T00:16:00Z</Timestamp>\r\n"
  63. ." <Unit>Bytes</Unit>\r\n"
  64. ." <Samples>1.0</Samples>\r\n"
  65. ." <Average>18251.0</Average>\r\n"
  66. ." </member>\r\n"
  67. ." </Datapoints>\r\n"
  68. ." <Label>NetworkIn</Label>"
  69. ." </GetMetricStatisticsResult>\r\n"
  70. ."</GetMetricStatisticsResponse>\r\n";
  71. $this->adapter->setResponse($rawHttpResponse);
  72. $return = $this->Zend_Service_Amazon_Ec2_CloudWatch->getMetricStatistics(array('MeasureName' => 'NetworkIn', 'Statistics' => array('Average')));
  73. $arrReturn = array(
  74. 'label' => 'NetworkIn',
  75. 'datapoints' => array(
  76. array(
  77. 'Timestamp' => '2009-06-16T23:57:00Z',
  78. 'Unit' => 'Bytes',
  79. 'Samples' => '1.0',
  80. 'Average' => '14838.0',
  81. ),
  82. array(
  83. 'Timestamp' => '2009-06-17T00:16:00Z',
  84. 'Unit' => 'Bytes',
  85. 'Samples' => '1.0',
  86. 'Average' => '18251.0',
  87. )
  88. )
  89. );
  90. $this->assertSame($arrReturn, $return);
  91. }
  92. /**
  93. * Tests Zend_Service_Amazon_Ec2_CloudWatch->listMetrics()
  94. */
  95. public function testListMetrics()
  96. {
  97. $rawHttpResponse = "HTTP/1.1 200 OK\r\n"
  98. . "Date: Fri, 24 Oct 2008 17:24:52 GMT\r\n"
  99. . "Server: hi\r\n"
  100. . "Last-modified: Fri, 24 Oct 2008 17:24:52 GMT\r\n"
  101. . "Status: 200 OK\r\n"
  102. . "Content-type: application/xml; charset=utf-8\r\n"
  103. . "Expires: Tue, 31 Mar 1981 05:00:00 GMT\r\n"
  104. . "Connection: close\r\n"
  105. . "\r\n"
  106. ."<ListMetricsResponse xmlns=\"http://monitoring.amazonaws.com/doc/2009-05-15/\">\r\n"
  107. ." <ListMetricsResult>\r\n"
  108. ." <Metrics>\r\n"
  109. ." <member>\r\n"
  110. ." <Dimensions>\r\n"
  111. ." <member>\r\n"
  112. ." <Name>InstanceId</Name>\r\n"
  113. ." <Value>i-bec576d7</Value>\r\n"
  114. ." </member>\r\n"
  115. ." </Dimensions>\r\n"
  116. ." <MeasureName>NetworkIn</MeasureName>\r\n"
  117. ." <Namespace>AWS/EC2</Namespace>\r\n"
  118. ." </member>\r\n"
  119. ." <member>\r\n"
  120. ." <Dimensions>\r\n"
  121. ." <member>\r\n"
  122. ." <Name>InstanceId</Name>\r\n"
  123. ." <Value>i-bec576d7</Value>\r\n"
  124. ." </member>\r\n"
  125. ." </Dimensions>\r\n"
  126. ." <MeasureName>CPUUtilization</MeasureName>\r\n"
  127. ." <Namespace>AWS/EC2</Namespace>\r\n"
  128. ." </member>\r\n"
  129. ." <member>\r\n"
  130. ." <Dimensions/>\r\n"
  131. ." <MeasureName>NetworkIn</MeasureName>\r\n"
  132. ." <Namespace>AWS/EC2</Namespace>\r\n"
  133. ." </member>\r\n"
  134. ." </Metrics>\r\n"
  135. ." </ListMetricsResult>\r\n"
  136. ."</ListMetricsResponse>\r\n";
  137. $this->adapter->setResponse($rawHttpResponse);
  138. $return = $this->Zend_Service_Amazon_Ec2_CloudWatch->listMetrics();
  139. $arrReturn = array(
  140. array(
  141. 'MeasureName' => 'NetworkIn',
  142. 'Namespace' => 'AWS/EC2',
  143. 'Deminsions' => array(
  144. 'name' => 'InstanceId',
  145. 'value' => 'i-bec576d7'
  146. )
  147. ),
  148. array(
  149. 'MeasureName' => 'CPUUtilization',
  150. 'Namespace' => 'AWS/EC2',
  151. 'Deminsions' => array(
  152. 'name' => 'InstanceId',
  153. 'value' => 'i-bec576d7'
  154. )
  155. ),
  156. array(
  157. 'MeasureName' => 'NetworkIn',
  158. 'Namespace' => 'AWS/EC2',
  159. 'Deminsions' => array()
  160. )
  161. );
  162. $this->assertSame($arrReturn, $return);
  163. }
  164. }