/** * @depends testIteratesOverScan */ public function testIteratesOverBatchGetItem() { self::log('Running BatchGetItem'); $history = new HistoryPlugin(); $this->client->addSubscriber($history); $iterator = $this->client->getIterator('BatchGetItem', array('RequestItems' => array($this->table => array('Keys' => array(array('HashKeyElement' => array('S' => 'Bar'), 'RangeKeyElement' => array('N' => '10')), array('HashKeyElement' => array('S' => 'Bar'), 'RangeKeyElement' => array('N' => '20')), array('HashKeyElement' => array('S' => 'Bar'), 'RangeKeyElement' => array('N' => '30'))), 'ConsistentRead' => true)))); $items = $iterator->toArray(); $this->client->getEventDispatcher()->removeSubscriber($history); // Ensure that the request was sent using consistent read $this->assertContains('"ConsistentRead":"true"', (string) $history->getLastRequest()->getBody()); $this->assertTrue(count($items) >= 3); $this->assertTrue($iterator->getRequestCount() >= 1); $mustMatch = $this->rangeKeyValues; foreach ($items as $item) { if (false !== ($pos = array_search($item['bar']['N'], $mustMatch))) { unset($mustMatch[$pos]); if (empty($mustMatch)) { break; } } } if (!empty($mustMatch)) { $this->fail('All known items were not found in scan: ' . var_export($mustMatch, true) . ' - found: ' . var_export($items, true)); } }