MongoDB-Async

 view release on metacpan or  search on metacpan

reconnect_stress_test.pl  view on Meta::CPAN


use MongoDB::Async;
my $dba = MongoDB::Async::Connection->new({"host" => "mongodb://127.0.0.1", ssl => 1 })->test->test;


my $doc = {
	"somename1" => "somedatasomedatasomedatasomedatasomedata",
	"somename2" => "somedatasomedatasomedatasomedatasomedata",
	"somename3" => "somedatasomedatasomedatasomedatasomedata",
	"somename4" => "somedatasomedatasomedatasomedatasomedata",
	"somename5" => "somedatasomedatasomedatasomedatasomedata",
	array => [
		"somedatasomedatasomedatasomedatasomedata",
		"somedatasomedatasomedatasomedatasomedata",
		"somedatasomedatasomedatasomedatasomedata",
		"somedatasomedatasomedatasomedatasomedata",
		"somedatasomedatasomedatasomedatasomedata",
		{}
	],
	
	hash => {
		"somename1" => "somedatasomedatasomedatasomedatasomedata",
		"somename2" => "somedatasomedatasomedatasomedatasomedata",
		"somename3" => "somedatasomedatasomedatasomedatasomedata",
		"somename4" => "somedatasomedatasomedatasomedatasomedata",
		"somename5" => "somedatasomedatasomedatasomedatasomedata",
	},
	undf => undef,
	
	_id => 0
};

$dba->drop();

my $numofdoc = 50;
for(0...$numofdoc){
	$dba->save($doc); $doc->{_id}++;
}

$|=1;
my $reads = 0;
my $writes = 0;
# async {
	# while(1){
		
		
		# Coro::AnyEvent::sleep 1;
	# }
# };

new_threads() for 1...100;
sub new_threads {
	print "$reads reads and $writes writes\r";
	async {
		while(){
			my $db = MongoDB::Async::Connection->new({"host" => "mongodb://127.0.0.1" });
			
			for (1..2){
				$db->get_database('test')->get_collection( 'test' )->find({})->all;
				$reads++;
				print "$reads reads and $writes writes. Ready coros: ".Coro::nready."\r";
			}
		}
		
	};
}




EV::loop;



( run in 0.663 second using v1.01-cache-2.11-cpan-39bf76dae61 )