// CreateTestTablet creates the test tablet in the topology. 'uid' // has to be between 0 and 99. All the tablet info will be derived // from that. Look at the implementation if you need values. // Use TabletOption implementations if you need to change values at creation. func NewFakeTablet(t *testing.T, wr *wrangler.Wrangler, cell string, uid uint32, tabletType topo.TabletType, options ...TabletOption) *FakeTablet { if uid < 0 || uid > 99 { t.Fatalf("uid has to be between 0 and 99: %v", uid) } state := topo.STATE_READ_ONLY if tabletType == topo.TYPE_MASTER { state = topo.STATE_READ_WRITE } tablet := &topo.Tablet{ Alias: topo.TabletAlias{Cell: cell, Uid: uid}, Hostname: fmt.Sprintf("%vhost", cell), Portmap: map[string]int{ "vt": 8100 + int(uid), "mysql": 3300 + int(uid), "vts": 8200 + int(uid), }, IPAddr: fmt.Sprintf("%v.0.0.1", 100+uid), Keyspace: "test_keyspace", Shard: "0", Type: tabletType, State: state, } for _, option := range options { option(tablet) } if err := wr.InitTablet(tablet, false, true, false); err != nil { t.Fatalf("cannot create tablet %v: %v", uid, err) } // create a FakeMysqlDaemon with the right information by default fakeMysqlDaemon := &mysqlctl.FakeMysqlDaemon{} if !tablet.Parent.IsZero() { fakeMysqlDaemon.MasterAddr = fmt.Sprintf("%v.0.0.1:%v", 100+tablet.Parent.Uid, 3300+int(tablet.Parent.Uid)) } fakeMysqlDaemon.MysqlPort = 3300 + int(uid) return &FakeTablet{ Tablet: tablet, FakeMysqlDaemon: fakeMysqlDaemon, } }