synapse 0.2.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. data/.gitignore +3 -0
  2. data/.mailmap +3 -0
  3. data/LICENSE.txt +2 -2
  4. data/Makefile +6 -0
  5. data/README.md +42 -13
  6. data/bin/synapse +29 -21
  7. data/config/hostheader_test.json +71 -0
  8. data/config/svcdir_test.json +46 -0
  9. data/config/synapse.conf.json +26 -32
  10. data/config/synapse_services/service1.json +24 -0
  11. data/config/synapse_services/service2.json +24 -0
  12. data/lib/synapse.rb +39 -24
  13. data/lib/synapse/base.rb +1 -1
  14. data/lib/synapse/haproxy.rb +579 -22
  15. data/lib/synapse/log.rb +24 -0
  16. data/lib/synapse/service_watcher.rb +10 -6
  17. data/lib/synapse/service_watcher/base.rb +33 -11
  18. data/lib/synapse/service_watcher/dns.rb +28 -20
  19. data/lib/synapse/service_watcher/docker.rb +108 -0
  20. data/lib/synapse/service_watcher/ec2tag.rb +1 -1
  21. data/lib/synapse/service_watcher/zookeeper.rb +25 -28
  22. data/lib/synapse/version.rb +1 -1
  23. data/spec/spec_helper.rb +2 -2
  24. data/synapse.gemspec +2 -3
  25. metadata +15 -25
  26. data/Vagrantfile +0 -112
  27. data/chef/converge +0 -4
  28. data/chef/cookbooks/lxc/recipes/default.rb +0 -2
  29. data/chef/cookbooks/synapse/attributes/default.rb +0 -1
  30. data/chef/cookbooks/synapse/recipes/default.rb +0 -6
  31. data/chef/run.json +0 -8
  32. data/chef/run.rb +0 -2
  33. data/client/.RData +0 -0
  34. data/client/.Rhistory +0 -294
  35. data/client/bench_rewrite_config.dat +0 -2013
  36. data/client/benchmark-client.iml +0 -20
  37. data/client/pom.xml +0 -45
  38. data/client/src/main/java/ClientArsch.java +0 -68
  39. data/client/src/main/java/META-INF/MANIFEST.MF +0 -3
  40. data/haproxy.pid +0 -1
  41. data/lib/gen-rb/endpoint_types.rb +0 -65
  42. data/lib/gen-rb/thrift.rb +0 -65
  43. data/test.sh +0 -3
@@ -1,20 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
3
- <component name="NewModuleRootManager" inherit-compiler-output="false">
4
- <output url="file://$MODULE_DIR$/target/classes" />
5
- <output-test url="file://$MODULE_DIR$/target/test-classes" />
6
- <content url="file://$MODULE_DIR$">
7
- <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8
- <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
9
- <excludeFolder url="file://$MODULE_DIR$/target" />
10
- </content>
11
- <orderEntry type="inheritedJdk" />
12
- <orderEntry type="sourceFolder" forTests="false" />
13
- <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpclient:4.2.1" level="project" />
14
- <orderEntry type="library" name="Maven: org.apache.httpcomponents:httpcore:4.2.1" level="project" />
15
- <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.1" level="project" />
16
- <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.6" level="project" />
17
- <orderEntry type="library" name="Maven: com.google.guava:guava:13.0-final" level="project" />
18
- </component>
19
- </module>
20
-
data/client/pom.xml DELETED
@@ -1,45 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project xmlns="http://maven.apache.org/POM/4.0.0"
3
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
- <modelVersion>4.0.0</modelVersion>
6
-
7
- <groupId>benchmark-client</groupId>
8
- <artifactId>benchmark-client</artifactId>
9
- <version>1.0</version>
10
-
11
- <dependencies>
12
- <dependency>
13
- <groupId>org.apache.httpcomponents</groupId>
14
- <artifactId>httpclient</artifactId>
15
- <version>4.2.1</version>
16
- </dependency>
17
- <dependency>
18
- <groupId>com.google.guava</groupId>
19
- <artifactId>guava</artifactId>
20
- <version>13.0-final</version>
21
- </dependency>
22
- </dependencies>
23
-
24
- <build>
25
- <plugins>
26
- <plugin>
27
- <groupId>org.apache.maven.plugins</groupId>
28
- <artifactId>maven-shade-plugin</artifactId>
29
- <version>1.6</version>
30
- <configuration>
31
- <!-- put your configurations here -->
32
- </configuration>
33
- <executions>
34
- <execution>
35
- <phase>package</phase>
36
- <goals>
37
- <goal>shade</goal>
38
- </goals>
39
- </execution>
40
- </executions>
41
- </plugin>
42
- </plugins>
43
- </build>
44
-
45
- </project>
@@ -1,68 +0,0 @@
1
- import org.apache.http.HttpEntity;
2
- import org.apache.http.HttpResponse;
3
- import org.apache.http.client.methods.HttpPost;
4
- import org.apache.http.impl.client.DefaultHttpClient;
5
- import org.apache.http.impl.conn.PoolingClientConnectionManager;
6
-
7
- import java.io.IOException;
8
- import java.util.concurrent.Executors;
9
- import java.util.concurrent.ScheduledExecutorService;
10
- import java.util.concurrent.ScheduledFuture;
11
- import java.util.concurrent.TimeUnit;
12
-
13
- /**
14
- * @author Tobi Knaup
15
- */
16
- public class ClientArsch {
17
-
18
- public static final int NUM_THREADS = 10;
19
- public static final int INTERVAL_MS = 25;
20
-
21
- private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
22
-
23
- public static void main(String[] args) {
24
- new ClientArsch().run();
25
- }
26
-
27
- public void run() {
28
-
29
- // final PoolingClientConnectionManager cm = new PoolingClientConnectionManager();
30
- // cm.setMaxTotal(100);
31
-
32
- for (int i = 0; i < NUM_THREADS; i++) {
33
- scheduler.scheduleAtFixedRate(new PostThread(String.valueOf(i)), 0, INTERVAL_MS, TimeUnit.MILLISECONDS);
34
- }
35
-
36
- // final ScheduledFuture<?> clientHandle =
37
- }
38
-
39
- class PostThread implements Runnable {
40
-
41
- DefaultHttpClient httpClient;
42
- HttpPost httpPost;
43
- String id;
44
-
45
- public PostThread(String id) {
46
- super();
47
- this.id = id;
48
- this.httpClient = new DefaultHttpClient();
49
- this.httpPost = new HttpPost("http://localhost:8088/search/test");
50
- }
51
-
52
- public void run() {
53
- try {
54
- Long tic = System.nanoTime();
55
- HttpResponse response = httpClient.execute(httpPost);
56
- Long toc = System.nanoTime();
57
-
58
- System.out.printf("%s\t%d\t%d\t%d\n", id, (toc / 1000L), (toc - tic) / 1000L, response.getStatusLine().getStatusCode());
59
-
60
- HttpEntity entity = response.getEntity();
61
- entity.getContent().close(); // release client
62
- } catch (IOException e) {
63
- e.printStackTrace();
64
- }
65
- }
66
- }
67
-
68
- }
@@ -1,3 +0,0 @@
1
- Manifest-Version: 1.0
2
- Main-Class: ClientArsch
3
-
data/haproxy.pid DELETED
@@ -1 +0,0 @@
1
- 189
@@ -1,65 +0,0 @@
1
- #
2
- # Autogenerated by Thrift
3
- #
4
- # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
- #
6
-
7
- require 'set'
8
- require 'thrift'
9
-
10
- module Twitter
11
- module Thrift
12
- module Status
13
- DEAD = 0
14
- STARTING = 1
15
- ALIVE = 2
16
- STOPPING = 3
17
- STOPPED = 4
18
- WARNING = 5
19
- VALUE_MAP = {0 => "DEAD", 1 => "STARTING", 2 => "ALIVE", 3 => "STOPPING", 4 => "STOPPED", 5 => "WARNING"}
20
- VALID_VALUES = Set.new([DEAD, STARTING, ALIVE, STOPPING, STOPPED, WARNING]).freeze
21
- end
22
-
23
- class Endpoint
24
- include ::Thrift::Struct, ::Thrift::Struct_Union
25
- HOST = 1
26
- PORT = 2
27
-
28
- FIELDS = {
29
- HOST => {:type => ::Thrift::Types::STRING, :name => 'host'},
30
- PORT => {:type => ::Thrift::Types::I32, :name => 'port'}
31
- }
32
-
33
- def struct_fields; FIELDS; end
34
-
35
- def validate
36
- end
37
-
38
- ::Thrift::Struct.generate_accessors self
39
- end
40
-
41
- class ServiceInstance
42
- include ::Thrift::Struct, ::Thrift::Struct_Union
43
- SERVICEENDPOINT = 1
44
- ADDITIONALENDPOINTS = 2
45
- STATUS = 3
46
-
47
- FIELDS = {
48
- SERVICEENDPOINT => {:type => ::Thrift::Types::STRUCT, :name => 'serviceEndpoint', :class => Twitter::Thrift::Endpoint},
49
- ADDITIONALENDPOINTS => {:type => ::Thrift::Types::MAP, :name => 'additionalEndpoints', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => Twitter::Thrift::Endpoint}},
50
- STATUS => {:type => ::Thrift::Types::I32, :name => 'status', :enum_class => Twitter::Thrift::Status}
51
- }
52
-
53
- def struct_fields; FIELDS; end
54
-
55
- def validate
56
- unless @status.nil? || Twitter::Thrift::Status::VALID_VALUES.include?(@status)
57
- raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field status!')
58
- end
59
- end
60
-
61
- ::Thrift::Struct.generate_accessors self
62
- end
63
-
64
- end
65
- end
data/lib/gen-rb/thrift.rb DELETED
@@ -1,65 +0,0 @@
1
- #
2
- # Autogenerated by Thrift
3
- #
4
- # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5
- #
6
-
7
- require 'set'
8
- require 'thrift'
9
-
10
- module Twitter
11
- module Thrift
12
- module Status
13
- DEAD = 0
14
- STARTING = 1
15
- ALIVE = 2
16
- STOPPING = 3
17
- STOPPED = 4
18
- WARNING = 5
19
- VALUE_MAP = {0 => "DEAD", 1 => "STARTING", 2 => "ALIVE", 3 => "STOPPING", 4 => "STOPPED", 5 => "WARNING"}
20
- VALID_VALUES = Set.new([DEAD, STARTING, ALIVE, STOPPING, STOPPED, WARNING]).freeze
21
- end
22
-
23
- class Endpoint
24
- include ::Thrift::Struct, ::Thrift::Struct_Union
25
- HOST = 1
26
- PORT = 2
27
-
28
- FIELDS = {
29
- HOST => {:type => ::Thrift::Types::STRING, :name => 'host'},
30
- PORT => {:type => ::Thrift::Types::I32, :name => 'port'}
31
- }
32
-
33
- def struct_fields; FIELDS; end
34
-
35
- def validate
36
- end
37
-
38
- ::Thrift::Struct.generate_accessors self
39
- end
40
-
41
- class ServiceInstance
42
- include ::Thrift::Struct, ::Thrift::Struct_Union
43
- SERVICEENDPOINT = 1
44
- ADDITIONALENDPOINTS = 2
45
- STATUS = 3
46
-
47
- FIELDS = {
48
- SERVICEENDPOINT => {:type => ::Thrift::Types::STRUCT, :name => 'serviceEndpoint', :class => Twitter::Thrift::Endpoint},
49
- ADDITIONALENDPOINTS => {:type => ::Thrift::Types::MAP, :name => 'additionalEndpoints', :key => {:type => ::Thrift::Types::STRING}, :value => {:type => ::Thrift::Types::STRUCT, :class => Twitter::Thrift::Endpoint}},
50
- STATUS => {:type => ::Thrift::Types::I32, :name => 'status', :enum_class => Twitter::Thrift::Status}
51
- }
52
-
53
- def struct_fields; FIELDS; end
54
-
55
- def validate
56
- unless @status.nil? || Twitter::Thrift::Status::VALID_VALUES.include?(@status)
57
- raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field status!')
58
- end
59
- end
60
-
61
- ::Thrift::Struct.generate_accessors self
62
- end
63
-
64
- end
65
- end
data/test.sh DELETED
@@ -1,3 +0,0 @@
1
- #!/bin/bash -ex
2
-
3
- echo running synapse script