function partition()

in cloudprober/grpc_gpc_prober/spanner_probes.php [247:294]


function partition($client, &$metrics){
	global $_DATABASE;
	global $_TEST_USERNAME;

	$createSessionRequest = new Google\Cloud\Spanner\V1\CreateSessionRequest();
	$createSessionRequest->setDatabase($_DATABASE);
	list($session, $status) = $client->CreateSession($createSessionRequest)->wait();

	hardAssertIfStatusOk($status);
	hardAssert($session !== null, 'Call completed with a null response');

	$txn_options = new Google\Cloud\Spanner\V1\TransactionOptions();
	$ro = new Google\Cloud\Spanner\V1\TransactionOptions\PBReadOnly();
	$txn_options->setReadOnly($ro);
	$txn_selector = new Google\Cloud\Spanner\V1\TransactionSelector();
	$txn_selector->setBegin($txn_options);

	#Probing PartitionQuery call
	$ptn_query_request = new Google\Cloud\Spanner\V1\PartitionQueryRequest();
	$ptn_query_request->setSession($session->getName());
	$ptn_query_request->setSql('select * FROM users');
	$ptn_query_request->setTransaction($txn_selector);

	$time_start = microtime_float();
	$client->PartitionQuery($ptn_query_request);
	$lantency =  (microtime_float() - $time_start) * 1000;
	$metrics['partition_query_latency_ms'] = $lantency;

	#Probing PartitionRead call
	$ptn_read_request = new Google\Cloud\Spanner\V1\PartitionReadRequest();
	$ptn_read_request->setSession($session->getName());
	$ptn_read_request->setTable('users');
	$ptn_read_request->setTransaction($txn_selector);
	$keyset = new Google\Cloud\Spanner\V1\KeySet();
	$keyset->setAll(True);
	$ptn_read_request->setKeySet($keyset);
	$ptn_read_request->setColumns(['username', 'firstname', 'lastname']);

	$time_start = microtime_float();
	$client->PartitionRead($ptn_read_request);
	$latency =  (microtime_float() - $time_start) * 1000;
	$metrics['partition_read_latency_ms'] = $latency;

	# Delete Session
	$deleteSessionRequest = new Google\Cloud\Spanner\V1\DeleteSessionRequest();
	$deleteSessionRequest->setName($session->getName());
	$client->deleteSession($deleteSessionRequest);
}