gizzmo 0.11.2 → 0.11.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -96,7 +96,7 @@ describe Gizzard::Nameserver::Manifest do
96
96
  @nameserver = Gizzard::Nameserver.new("localhost:1234")
97
97
  @state = Object.new
98
98
 
99
- mock(@nameserver).dump_nameserver(0) { @state }
99
+ mock(@nameserver).dump_nameserver([0]) { [@state] }
100
100
  mock(@state).forwardings { @forwardings }
101
101
  mock(@state).links { @links }
102
102
  mock(@state).shards { @shardinfos }
@@ -15,17 +15,17 @@ describe Gizzard::Transformation::Scheduler do
15
15
  shards = [info('127.0.0.1', 't_0_0001', 'TestShard')]
16
16
  mock(@nameserver).get_busy_shards { shards }
17
17
 
18
- @scheduler.busy_shards.should == shards.map {|s| s.id }
19
- @scheduler.busy_shards.should == shards.map {|s| s.id }
18
+ @scheduler.busy_shards.should == shards.map {|s| s.id }.to_set
19
+ @scheduler.busy_shards.should == shards.map {|s| s.id }.to_set
20
20
  end
21
21
 
22
22
  it "resets after calling reload_busy_shards" do
23
23
  shards = [info('127.0.0.1', 't_0_0001', 'TestShard')]
24
24
  mock(@nameserver).get_busy_shards { shards }.twice
25
25
 
26
- @scheduler.busy_shards.should == shards.map {|s| s.id }
26
+ @scheduler.busy_shards.should == shards.map {|s| s.id }.to_set
27
27
  @scheduler.reload_busy_shards
28
- @scheduler.busy_shards.should == shards.map {|s| s.id }
28
+ @scheduler.busy_shards.should == shards.map {|s| s.id }.to_set
29
29
  end
30
30
  end
31
31
 
@@ -35,15 +35,15 @@ describe Gizzard::Transformation::Scheduler do
35
35
  stub(@nameserver).get_busy_shards { shards }
36
36
  @scheduler = Gizzard::Transformation::Scheduler.new(@nameserver, 't', @transformations, :copies_per_host => 2)
37
37
 
38
- @scheduler.busy_hosts.should == []
38
+ @scheduler.busy_hosts.should == Set.new
39
39
 
40
40
  shards = [info('127.0.0.1', 't_0_0001', 'TestShard')]
41
41
  @scheduler.reload_busy_shards
42
- @scheduler.busy_hosts.should == []
42
+ @scheduler.busy_hosts.should == Set.new
43
43
 
44
44
  shards = [info('127.0.0.1', 't_0_0001', 'TestShard'), info('127.0.0.1', 't_0_0002', 'TestShard')]
45
45
  @scheduler.reload_busy_shards
46
- @scheduler.busy_hosts.should == ['127.0.0.1']
46
+ @scheduler.busy_hosts.should == ['127.0.0.1'].to_set
47
47
  end
48
48
 
49
49
  it "respects passed in extra hosts" do
@@ -51,9 +51,9 @@ describe Gizzard::Transformation::Scheduler do
51
51
  stub(@nameserver).get_busy_shards { shards }
52
52
  @scheduler = Gizzard::Transformation::Scheduler.new(@nameserver, 't', @transformations, :copies_per_host => 2)
53
53
 
54
- @scheduler.busy_hosts.should == []
55
- @scheduler.busy_hosts(["127.0.0.1"]).should == []
56
- @scheduler.busy_hosts(["127.0.0.1", "127.0.0.1"]).should == ["127.0.0.1"]
54
+ @scheduler.busy_hosts.should == Set.new
55
+ @scheduler.busy_hosts(["127.0.0.1"]).should == Set.new
56
+ @scheduler.busy_hosts(["127.0.0.1", "127.0.0.1"]).should == ["127.0.0.1"].to_set
57
57
  end
58
58
  end
59
59
  end
@@ -11,6 +11,13 @@ JOB_PORT = 7921
11
11
  SERVICE_DATABASE = 'gizzard_test_integration'
12
12
  NAMESERVER_DATABASE = 'gizzard_test_integration_ns'
13
13
 
14
+ class Object
15
+ def T; p self; self end
16
+ end
17
+
18
+ class NilClass
19
+ def T; p self; self end
20
+ end
14
21
 
15
22
  require 'rubygems'
16
23
  require 'spec'
@@ -78,6 +85,8 @@ def reset_nameserver(db = NAMESERVER_DATABASE)
78
85
  $mysql.query("delete from `#{db}`.shard_children")
79
86
  $mysql.query("delete from `#{db}`.forwardings")
80
87
  $mysql.query("delete from `#{db}`.hosts")
88
+
89
+ nameserver.reload_config rescue nil
81
90
  end
82
91
 
83
92
  def reset_databases!
@@ -89,8 +98,7 @@ def reset_databases!
89
98
  rescue MysqlError
90
99
 
91
100
  begin
92
- m = Gizzard::Manager.new("localhost", MANAGER_PORT, '/dev/null', false)
93
- m.rebuild_schema
101
+ nameserver.rebuild_schema
94
102
  rescue Errno::ECONNREFUSED
95
103
  end
96
104
  end
@@ -99,7 +107,7 @@ end
99
107
  def read_nameserver_db(db = NAMESERVER_DATABASE)
100
108
  { :shards => map_rs($mysql.query("select * from `#{db}`.shards"), &method(:as_shard)),
101
109
  :links => map_rs($mysql.query("select * from `#{db}`.shard_children"), &method(:as_link)),
102
- :forwardings => map_rs($mysql.query("select * from `#{db}`.forwardings"), &method(:as_forwarding)),
110
+ :forwardings => map_rs($mysql.query("select * from `#{db}`.forwardings where deleted = 0"), &method(:as_forwarding)),
103
111
  :hosts => map_rs($mysql.query("select * from `#{db}`.hosts"), &method(:as_host)) }
104
112
  end
105
113
 
@@ -129,11 +137,24 @@ def as_host(h)
129
137
  Gizzard::Host.new(h['hostname'], h['port'].to_i, h['cluster'], h['status'].to_i)
130
138
  end
131
139
 
140
+ def gizzmo(cmd)
141
+ result = `cd #{ROOT_DIR} && ruby -rubygems -Ilib bin/gizzmo -H localhost -P #{MANAGER_PORT} #{cmd} 2>&1`
142
+ puts result if ENV['GIZZMO_OUTPUT']
143
+ result
144
+ end
145
+
146
+ def nameserver
147
+ @nameserver ||= Gizzard::Nameserver.new('localhost:' + MANAGER_PORT.to_s)
148
+ end
149
+
150
+ alias ns nameserver
132
151
 
133
152
  # setup
134
153
 
135
154
  mysql_connect!("localhost", '', '')
136
155
  reset_databases!
137
- start_test_server!
138
156
 
139
- at_exit { stop_test_server! }
157
+ unless ENV['EXTERNAL_TEST_SERVER']
158
+ start_test_server!
159
+ at_exit { stop_test_server! }
160
+ end
@@ -7,7 +7,7 @@ class GizzmoServerProject(info: ProjectInfo) extends StandardProject(info) {
7
7
  override def filterScalaJars = false
8
8
 
9
9
  val scalaTools = "org.scala-lang" % "scala-compiler" % "2.7.7"
10
- val gizzard = "com.twitter" % "gizzard" % "1.6-mc-SNAPSHOT"
10
+ val gizzard = "com.twitter" % "gizzard" % "1.6-fr-SNAPSHOT"
11
11
 
12
12
  val specs = "org.scala-tools.testing" % "specs" % "1.6.2.1" % "test"
13
13
  }
@@ -2,5 +2,5 @@ import sbt._
2
2
 
3
3
  class Plugins(info: ProjectInfo) extends PluginDefinition(info) {
4
4
  val twitterMaven = "twitter.com" at "http://maven.twttr.com/"
5
- val defaultProject = "com.twitter" % "standard-project" % "0.7.12"
5
+ val defaultProject = "com.twitter" % "standard-project" % "0.7.17"
6
6
  }
@@ -39,6 +39,14 @@ describe Gizzard::Transformation do
39
39
  end
40
40
  end
41
41
 
42
+ describe "eql?" do
43
+ it "is true for two transformation involving equivalent templates" do
44
+ templates = lambda { ["SqlShard(host1)", "SqlShard(host2)"].map {|s| mk_template s } }
45
+ Gizzard::Transformation.new(*templates.call).should.eql? Gizzard::Transformation.new(*templates.call)
46
+ Gizzard::Transformation.new(*templates.call).hash.should.eql? Gizzard::Transformation.new(*templates.call).hash
47
+ end
48
+ end
49
+
42
50
  # internal method tests
43
51
 
44
52
  describe "operations" do
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gizzmo
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 53
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 11
8
- - 2
9
- version: 0.11.2
9
+ - 3
10
+ version: 0.11.3
10
11
  platform: ruby
11
12
  authors:
12
13
  - Kyle Maxwell
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-01-06 00:00:00 -08:00
18
+ date: 2011-01-26 00:00:00 -08:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -42,6 +43,7 @@ files:
42
43
  - lib/gizzard/digest.rb
43
44
  - lib/gizzard/migrator.rb
44
45
  - lib/gizzard/nameserver.rb
46
+ - lib/gizzard/rebalancer.rb
45
47
  - lib/gizzard/shard_template.rb
46
48
  - lib/gizzard/thrift.rb
47
49
  - lib/gizzard/transformation.rb
@@ -83,6 +85,9 @@ files:
83
85
  - test/test_server/src/main/scala/TestServer.scala
84
86
  - test/test_server/src/main/thrift/TestServer.thrift
85
87
  - test/transformation_spec.rb
88
+ - test/test_server/target/gen-rb/test_server.rb
89
+ - test/test_server/target/gen-rb/test_server_constants.rb
90
+ - test/test_server/target/gen-rb/test_server_types.rb
86
91
  has_rdoc: true
87
92
  homepage: http://github.com/twitter/gizzmo
88
93
  licenses: []
@@ -93,23 +98,27 @@ rdoc_options:
93
98
  require_paths:
94
99
  - lib
95
100
  required_ruby_version: !ruby/object:Gem::Requirement
101
+ none: false
96
102
  requirements:
97
103
  - - ">="
98
104
  - !ruby/object:Gem::Version
105
+ hash: 3
99
106
  segments:
100
107
  - 0
101
108
  version: "0"
102
109
  required_rubygems_version: !ruby/object:Gem::Requirement
110
+ none: false
103
111
  requirements:
104
112
  - - ">="
105
113
  - !ruby/object:Gem::Version
114
+ hash: 3
106
115
  segments:
107
116
  - 0
108
117
  version: "0"
109
118
  requirements: []
110
119
 
111
120
  rubyforge_project:
112
- rubygems_version: 1.3.6
121
+ rubygems_version: 1.3.7
113
122
  signing_key:
114
123
  specification_version: 3
115
124
  summary: Gizzmo is a command-line client for managing gizzard clusters.
@@ -120,4 +129,7 @@ test_files:
120
129
  - test/scheduler_spec.rb
121
130
  - test/shard_template_spec.rb
122
131
  - test/spec_helper.rb
132
+ - test/test_server/target/gen-rb/test_server.rb
133
+ - test/test_server/target/gen-rb/test_server_constants.rb
134
+ - test/test_server/target/gen-rb/test_server_types.rb
123
135
  - test/transformation_spec.rb