Permalink
Fetching contributors…
Cannot retrieve contributors at this time
92 lines (74 sloc) 3.38 KB
/*
Copyright 2017 Google Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreedto in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// This file contains the vttest topology configuration structures.
//
// The protobuf message "VTTestTopology" specifies the Vitess and
// database configuration of the "vttest" test component which can be
// used in end-to-end tests to test an application against an actual
// Vitess and MySQL server.
//
// To start a "vttest" instance, pass the "VTTestTopology" message,
// encoded in the protobuf compact text format, to
// py/vttest/run_local_database.py which in turn will send it to the
// Vitess test binary called "vtcombo".
//
// To encode a "VTTestTopology" message in the protobuf compact text
// format, create the protobuf in your test's native language first
// and then use the protobuf library to encode it as text.
// For an example in Python, see: test/vttest_sample_test.py
// In go, see: go/vt/vttest/local_cluster_test.go
//
// Sample encoded proto configurations would be as follow. Note there are
// multiple encoding options, see the proto documentation for more info
// (first and last quote not included in the encoding):
// - single keyspace named test_keyspace with one shard '0':
// 'keyspaces:<name:"test_keyspace" shards:<name:"0" > > '
// - two keyspaces, one with two shards, the other one with a redirect:
// 'keyspaces { name: "test_keyspace" shards { name: "-80" } shards { name: "80-" } } keyspaces { name: "redirect" served_from: "test_keyspace" }'
syntax = "proto3";
package vttest;
// Shard describes a single shard in a keyspace.
message Shard {
// name has to be unique in a keyspace. For unsharded keyspaces, it
// should be '0'. For sharded keyspace, it should be derived from
// the keyrange, like '-80' or '40-80'.
string name = 1;
// db_name_override is the mysql db name for this shard. Has to be
// globally unique. If not specified, we will by default use
// 'vt_<keyspace>_<shard>'.
string db_name_override = 2;
}
// Keyspace describes a single keyspace.
message Keyspace {
// name has to be unique in a VTTestTopology.
string name = 1;
// shards inside this keyspace. Ignored if redirect is set.
repeated Shard shards = 2;
// sharding_column_name for this keyspace. Used for v2 calls, but not for v3.
string sharding_column_name = 3;
// sharding_column_type for this keyspace. Used for v2 calls, but not for v3.
string sharding_column_type = 4;
// redirects all traffic to another keyspace. If set, shards is ignored.
string served_from = 5;
// number of replica tablets to instantiate. This includes the master tablet.
int32 replica_count = 6;
// number of rdonly tablets to instantiate.
int32 rdonly_count = 7;
}
// VTTestTopology describes the keyspaces in the topology.
message VTTestTopology {
// all keyspaces in the topology.
repeated Keyspace keyspaces = 1;
// list of cells the keyspaces reside in. Vtgate is started in only the first cell.
repeated string cells = 2;
}