1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
--TEST--
MongoWriteBatch: Allow custom batch instance
--SKIPIF--
<?php $needs = "2.5.5"; ?>
<?php if ( ! class_exists('MongoWriteBatch')) { exit('skip This test requires MongoWriteBatch classes'); } ?>
<?php require_once "tests/utils/standalone.inc" ?>
--FILE--
<?php
require_once "tests/utils/server.inc";
class MyInsertBatch extends MongoWriteBatch {
public function __construct($client) {
parent::__construct($client, MongoWriteBatch::COMMAND_INSERT);
}
}
class MyUpdateBatch extends MongoWriteBatch {
public function __construct($client) {
parent::__construct($client, MongoWriteBatch::COMMAND_UPDATE);
}
}
class MyDeleteBatch extends MongoWriteBatch {
public function __construct($client) {
parent::__construct($client, MongoWriteBatch::COMMAND_DELETE);
}
}
class MyBrokenBatch extends MongoWriteBatch {
public function __construct($client) {
parent::__construct($client, 0);
}
}
$host = MongoShellServer::getStandaloneInfo();
$mc = new MongoClient($host);
$collection = $mc->selectCollection(dbname(), collname(__FILE__));
$collection->drop();
$batch = new MyInsertBatch($collection);
$batch->add(array("my" => "document"));
var_dump($batch->getItemCount(), $batch->getBatchInfo());
$batch->execute();
var_dump($batch->getItemCount(), $batch->getBatchInfo());
var_dump($collection->findOne());
$batch = new MyUpdateBatch($collection);
$batch->add(array("q" => array("my" => "document"), "u" => array('$set' => array("got" => "updated"))));
var_dump($batch->getItemCount(), $batch->getBatchInfo());
$batch->execute();
var_dump($batch->getItemCount(), $batch->getBatchInfo());
var_dump($collection->findOne());
$batch = new MyDeleteBatch($collection);
$batch->add(array("q" => array("my" => "document"), "limit" => 1));
var_dump($batch->getItemCount(), $batch->getBatchInfo());
$batch->execute();
var_dump($batch->getItemCount(), $batch->getBatchInfo());
var_dump($collection->findOne());
try {
$batch = new MyBrokenBatch($collection);
echo "Failed\n";
} catch(Exception $e) {
echo get_class($e), "\n";
echo $e->getMessage(), "\n";
}
?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
int(1)
array(1) {
[0]=>
array(2) {
["count"]=>
int(1)
["size"]=>
int(143)
}
}
int(0)
array(0) {
}
array(2) {
["_id"]=>
object(MongoId)#%d (1) {
["$id"]=>
string(24) "%s"
}
["my"]=>
string(8) "document"
}
int(1)
array(1) {
[0]=>
array(2) {
["count"]=>
int(1)
["size"]=>
int(168)
}
}
int(0)
array(0) {
}
array(3) {
["_id"]=>
object(MongoId)#%d (1) {
["$id"]=>
string(24) "%s"
}
["my"]=>
string(8) "document"
["got"]=>
string(7) "updated"
}
int(1)
array(1) {
[0]=>
array(2) {
["count"]=>
int(1)
["size"]=>
int(143)
}
}
int(0)
array(0) {
}
NULL
MongoException
Invalid batch type specified: 0
===DONE===
|