mirror of
https://github.com/mongodb/mongo.git
synced 2024-12-01 09:32:32 +01:00
81 lines
2.4 KiB
C++
81 lines
2.4 KiB
C++
/** @file directclienttests.cpp
|
|
*/
|
|
|
|
/**
|
|
* Copyright (C) 2008 10gen Inc.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License, version 3,
|
|
* as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include "pch.h"
|
|
#include "../db/query.h"
|
|
#include "../db/db.h"
|
|
#include "../db/instance.h"
|
|
#include "../db/json.h"
|
|
#include "../db/lasterror.h"
|
|
#include "../db/update.h"
|
|
#include "../util/timer.h"
|
|
#include "dbtests.h"
|
|
|
|
namespace DirectClientTests {
|
|
|
|
class ClientBase {
|
|
public:
|
|
// NOTE: Not bothering to backup the old error record.
|
|
ClientBase() { mongo::lastError.reset( new LastError() ); }
|
|
virtual ~ClientBase() { }
|
|
protected:
|
|
static bool error() {
|
|
return !_client.getPrevError().getField( "err" ).isNull();
|
|
}
|
|
DBDirectClient &client() const { return _client; }
|
|
private:
|
|
static DBDirectClient _client;
|
|
};
|
|
DBDirectClient ClientBase::_client;
|
|
|
|
const char *ns = "a.b";
|
|
|
|
class Capped : public ClientBase {
|
|
public:
|
|
virtual void run() {
|
|
for( int pass=0; pass < 3; pass++ ) {
|
|
client().createCollection(ns, 1024 * 1024, true, 999);
|
|
for( int j =0; j < pass*3; j++ )
|
|
client().insert(ns, BSON("x" << j));
|
|
|
|
// test truncation of a capped collection
|
|
if( pass ) {
|
|
BSONObj info;
|
|
BSONObj cmd = BSON( "captrunc" << "b" << "n" << 1 << "inc" << true );
|
|
cout << cmd.toString() << endl;
|
|
bool ok = client().runCommand("a", cmd, info);
|
|
cout << info.toString() << endl;
|
|
assert(ok);
|
|
}
|
|
|
|
assert( client().dropCollection(ns) );
|
|
}
|
|
}
|
|
};
|
|
|
|
class All : public Suite {
|
|
public:
|
|
All() : Suite( "directclient" ) {
|
|
}
|
|
void setupTests() {
|
|
add< Capped >();
|
|
}
|
|
} myall;
|
|
}
|