Scalr\Tests\Service\Aws\CloudWatchTest::testFunctionalMetric PHP Method

testFunctionalMetric() public method

    public function testFunctionalMetric()
    {
        $this->skipIfEc2PlatformDisabled();
        $ds = array();
        $metricList = $this->cloudWatch->metric->list(null, 'AWS/EC2');
        $this->assertInstanceOf(self::CLASS_CLOUD_WATCH_METRIC_LIST, $metricList);
        $this->assertInstanceOf(self::CLASS_CLOUD_WATCH, $metricList->getCloudWatch());
        /* @var $metric MetricData */
        foreach ($metricList as $metric) {
            $this->assertInstanceOf(self::CLASS_CLOUD_WATCH_METRIC_DATA, $metric);
            $this->assertInstanceOf(self::CLASS_CLOUD_WATCH, $metric->getCloudWatch());
            $this->assertInstanceOf(self::CLASS_CLOUD_WATCH_DIMENSION_LIST, $metric->dimensions);
            $this->assertInstanceOf(self::CLASS_CLOUD_WATCH, $metric->dimensions->getCloudWatch());
            $this->assertNotNull($metric->dimensions->getMetricName());
            $this->assertEquals($metric->metricName, $metric->dimensions->getMetricName());
            /* @var $dimension DimensionData */
            foreach ($metric->dimensions as $dimension) {
                if ($metric->metricName == 'NetworkOut' && count($ds) < 2) {
                    $ds[] = $dimension;
                }
                $this->assertInstanceOf(self::CLASS_CLOUD_WATCH_DIMENSION_DATA, $dimension);
                $this->assertInstanceOf(self::CLASS_CLOUD_WATCH, $dimension->getCloudWatch());
                $this->assertNotNull($dimension->getMetricName());
                $this->assertEquals($metric->metricName, $dimension->getMetricName());
            }
        }
        try {
            $datapointList = $this->cloudWatch->metric->getStatistics('NetworkOut', new \DateTime('-1 hour', new \DateTimeZone('UTC')), new \DateTime(null, new \DateTimeZone('UTC')), array('Average'), 'AWS/EC2', 300, 'Bytes', $ds);
        } catch (QueryClientException $e) {
            $ignoreDatapoint = true;
        }
        if (!isset($ignoreDatapoint)) {
            $this->assertInstanceOf(self::CLASS_CLOUD_WATCH_DATAPOINT_LIST, $datapointList);
            $this->assertInstanceOf(self::CLASS_CLOUD_WATCH, $datapointList->getCloudWatch());
            foreach ($datapointList as $datapoint) {
                $this->assertInstanceOf(self::CLASS_CLOUD_WATCH_DATAPOINT_DATA, $datapoint);
                $this->assertInstanceOf(self::CLASS_CLOUD_WATCH, $datapoint->getCloudWatch());
            }
        }
    }