gizzmo 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.4
1
+ 0.2.0
data/gizzmo.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gizzmo}
8
- s.version = "0.1.4"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kyle Maxwell"]
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
36
36
  "test/expected/dry-wrap-table_b_0.txt",
37
37
  "test/expected/empty-file.txt",
38
38
  "test/expected/find-only-sql-shard-type.txt",
39
+ "test/expected/forwardings.txt",
39
40
  "test/expected/help-info.txt",
40
41
  "test/expected/info.txt",
41
42
  "test/expected/links-for-replicating_table_b_0.txt",
@@ -24,6 +24,27 @@ module Gizzard
24
24
  end
25
25
  end
26
26
 
27
+ class AddforwardingCommand < Command
28
+ def run
29
+ help! if argv.length != 3
30
+ table_id, base_id, shard_id_text = argv
31
+ shard_id = ShardId.parse(shard_id_text)
32
+ service.set_forwarding(Forwarding.new(table_id.to_i, base_id.to_i, shard_id))
33
+ end
34
+ end
35
+
36
+ class ForwardingsCommand < Command
37
+ def run
38
+ service.get_forwardings().sort_by do |f|
39
+ [ ((f.table_id.abs << 1) + (f.table_id < 0 ? 1 : 0)), f.base_id ]
40
+ end.reject do |forwarding|
41
+ @command_options.table_ids && !@command_options.table_ids.include?(forwarding.table_id)
42
+ end.each do |forwarding|
43
+ puts [ forwarding.table_id, forwarding.base_id, forwarding.shard_id.to_unix ].join("\t")
44
+ end
45
+ end
46
+ end
47
+
27
48
  class SubtreeCommand < Command
28
49
  def run
29
50
  @roots = []
data/lib/gizzmo.rb CHANGED
@@ -46,6 +46,17 @@ subcommands = {
46
46
  'delete' => OptionParser.new do |opts|
47
47
  opts.banner = "Usage: #{$0} delete SHARD_ID_TO_DELETE [MORE SHARD_IDS]"
48
48
  end,
49
+ 'addforwarding' => OptionParser.new do |opts|
50
+ opts.banner = "Usage: #{$0} addforwarding TABLE_ID BASE_ID SHARD_ID"
51
+ end,
52
+ 'forwardings' => OptionParser.new do |opts|
53
+ opts.banner = "Usage: #{$0} show [options]"
54
+
55
+ opts.on("-t", "--tables=IDS", "Show only the specified table ids (comma separated)") do |table_ids|
56
+ subcommand_options.table_ids ||= []
57
+ subcommand_options.table_ids += table_ids.split(",").map { |s| s.to_i }
58
+ end
59
+ end,
49
60
  'unwrap' => OptionParser.new do |opts|
50
61
  opts.banner = "Usage: #{$0} unwrap SHARD_ID_TO_REMOVE [MORE SHARD_IDS]"
51
62
  end,
@@ -110,6 +121,10 @@ global = OptionParser.new do |opts|
110
121
  opts.on("-L", "--log=LOG_FILE", "Path to LOG_FILE") do |file|
111
122
  global_options.log = file
112
123
  end
124
+
125
+ opts.on("-f", "--force", "Don't display confirmation dialogs") do |force|
126
+ global_options.force = force
127
+ end
113
128
  end
114
129
 
115
130
  # Print banner if no args
@@ -0,0 +1 @@
1
+ 1 0 localhost/table_a_3
data/test/test.sh CHANGED
@@ -4,25 +4,13 @@ function g {
4
4
  # echo "> g $@" >&2
5
5
  ../bin/gizzmo -Cconfig.yaml "$@" 2>&1
6
6
  }
7
+
7
8
  function expect {
8
9
  diff -u - "expected/$1" && echo " success." || echo " failed." && exit 1
9
10
  }
10
11
 
11
- # set -ex
12
-
13
- if ["$FLOCK_ENV" -eq ""]; then
14
- FLOCK_ENV=development
15
- fi
16
-
17
- for i in 1 2
18
- do
19
- for type in edges groups
20
- do
21
- db="flock_${type}_${FLOCK_ENV}_${i}"
22
- echo "drop database if exists $db; create database $db; " | mysql -u"$DB_USERNAME" --password="$DB_PASSWORD"
23
- cat recreate.sql | mysql -u"$DB_USERNAME" --password="$DB_PASSWORD" "$db"
24
- done
25
- done
12
+ g find -hlocalhost | xargs ../bin/gizzmo -Cconfig.yaml delete
13
+ g find -hlocalhost | expect empty-file.txt
26
14
 
27
15
  for i in {0..9}
28
16
  do
@@ -37,7 +25,9 @@ for i in `g find -h localhost`; do g info $i; done | expect info.txt
37
25
  g find -hlocalhost | expect original-find.txt
38
26
  g find -hlocalhost -tSqlShard | expect find-only-sql-shard-type.txt
39
27
 
40
- # Dry run this
28
+ g addforwarding 1 0 localhost/table_a_3
29
+ g forwardings | expect forwardings.txt
30
+ g unforward 1 0 localhost/table_a_3
41
31
 
42
32
  g -D wrap com.twitter.service.flock.edges.ReplicatingShard localhost/table_b_0 | expect dry-wrap-table_b_0.txt
43
33
  g wrap com.twitter.service.flock.edges.ReplicatingShard localhost/table_b_0 | expect wrap-table_b_0.txt
@@ -54,7 +44,3 @@ g links localhost/table_b_0 | expect empty-file.txt
54
44
 
55
45
  g wrap com.twitter.gizzard.shards.BlockedShard localhost/table_a_3
56
46
  g find -hlocalhost | xargs ../bin/gizzmo -Cconfig.yaml subtree 2>&1 | expect subtree.txt
57
-
58
- g find -hlocalhost | xargs ../bin/gizzmo -Cconfig.yaml delete
59
- g find -hlocalhost | expect empty-file.txt
60
-
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- - 4
9
- version: 0.1.4
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Kyle Maxwell
@@ -45,6 +45,7 @@ files:
45
45
  - test/expected/dry-wrap-table_b_0.txt
46
46
  - test/expected/empty-file.txt
47
47
  - test/expected/find-only-sql-shard-type.txt
48
+ - test/expected/forwardings.txt
48
49
  - test/expected/help-info.txt
49
50
  - test/expected/info.txt
50
51
  - test/expected/links-for-replicating_table_b_0.txt