siffer 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +1 -1
- data/README +93 -0
- data/lib/siffer.rb +13 -16
- data/lib/siffer/agent.rb +39 -31
- data/lib/siffer/core_ext/hash.rb +15 -0
- data/lib/siffer/messages.rb +38 -4
- data/lib/siffer/messages/ack.rb +160 -35
- data/lib/siffer/messages/event.rb +20 -0
- data/lib/siffer/messages/message.rb +47 -58
- data/lib/siffer/messages/provide.rb +25 -0
- data/lib/siffer/messages/provision.rb +17 -0
- data/lib/siffer/messages/register.rb +42 -52
- data/lib/siffer/messages/request.rb +138 -0
- data/lib/siffer/messages/response.rb +48 -0
- data/lib/siffer/messages/subscribe.rb +17 -0
- data/lib/siffer/messages/system_control.rb +94 -0
- data/lib/siffer/models.rb +1 -0
- data/lib/siffer/models/address.rb +39 -0
- metadata +25 -146
- data/README.rdoc +0 -65
- data/Rakefile +0 -64
- data/bin/siffer +0 -71
- data/doc/SIF ImplementationSpecification.pdf +0 -0
- data/doc/rdoc/classes/Siffer.html +0 -259
- data/doc/rdoc/classes/Siffer/Agent.html +0 -177
- data/doc/rdoc/classes/Siffer/Container.html +0 -165
- data/doc/rdoc/classes/Siffer/Messages.html +0 -81
- data/doc/rdoc/classes/Siffer/Messages/Ack.html +0 -115
- data/doc/rdoc/classes/Siffer/Messages/Acl.html +0 -83
- data/doc/rdoc/classes/Siffer/Messages/Error.html +0 -157
- data/doc/rdoc/classes/Siffer/Messages/Message.html +0 -235
- data/doc/rdoc/classes/Siffer/Messages/Message/Header.html +0 -107
- data/doc/rdoc/classes/Siffer/Messages/Register.html +0 -154
- data/doc/rdoc/classes/Siffer/Messages/RequestBody.html +0 -185
- data/doc/rdoc/classes/Siffer/Messages/Status.html +0 -156
- data/doc/rdoc/classes/Siffer/Messaging.html +0 -212
- data/doc/rdoc/classes/Siffer/Protocol.html +0 -254
- data/doc/rdoc/classes/Siffer/Protocol/NonPostRequest.html +0 -54
- data/doc/rdoc/classes/Siffer/Protocol/UnknownPath.html +0 -54
- data/doc/rdoc/classes/Siffer/Registration.html +0 -251
- data/doc/rdoc/classes/Siffer/Request.html +0 -103
- data/doc/rdoc/classes/Siffer/RequestLogger.html +0 -109
- data/doc/rdoc/classes/Siffer/Response.html +0 -91
- data/doc/rdoc/classes/Siffer/Server.html +0 -156
- data/doc/rdoc/created.rid +0 -1
- data/doc/rdoc/files/LICENSE.html +0 -76
- data/doc/rdoc/files/README_rdoc.html +0 -131
- data/doc/rdoc/files/lib/siffer/agent_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/container_rb.html +0 -57
- data/doc/rdoc/files/lib/siffer/messages/ack_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/messages/acl_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/messages/error_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/messages/message_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/messages/register_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/messages/request_body_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/messages/status_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/messages_rb.html +0 -63
- data/doc/rdoc/files/lib/siffer/messaging_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/protocol_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/registration_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/request_logger_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/request_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/response_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer/server_rb.html +0 -49
- data/doc/rdoc/files/lib/siffer_rb.html +0 -64
- data/doc/rdoc/fr_class_index.html +0 -25
- data/doc/rdoc/fr_file_index.html +0 -39
- data/doc/rdoc/fr_method_index.html +0 -4539
- data/doc/rdoc/index.html +0 -15
- data/doc/rdoc/rdoc-style.css +0 -319
- data/lib/siffer/container.rb +0 -94
- data/lib/siffer/messages/acl.rb +0 -25
- data/lib/siffer/messages/error.rb +0 -174
- data/lib/siffer/messages/request_body.rb +0 -66
- data/lib/siffer/messages/status.rb +0 -55
- data/lib/siffer/messaging.rb +0 -99
- data/lib/siffer/protocol.rb +0 -164
- data/lib/siffer/registration.rb +0 -87
- data/lib/siffer/request.rb +0 -28
- data/lib/siffer/request_logger.rb +0 -32
- data/lib/siffer/response.rb +0 -26
- data/lib/siffer/server.rb +0 -42
- data/spec/agent_spec.rb +0 -48
- data/spec/cli_spec.rb +0 -40
- data/spec/container_spec.rb +0 -103
- data/spec/default_agent +0 -6
- data/spec/default_server +0 -5
- data/spec/message_specs/ack_spec.rb +0 -28
- data/spec/message_specs/error_spec.rb +0 -24
- data/spec/message_specs/header_spec.rb +0 -25
- data/spec/message_specs/message_spec.rb +0 -57
- data/spec/message_specs/register_spec.rb +0 -86
- data/spec/message_specs/request_body_spec.rb +0 -58
- data/spec/message_specs/status_spec.rb +0 -25
- data/spec/messaging_spec.rb +0 -85
- data/spec/protocol_spec.rb +0 -50
- data/spec/registration_spec.rb +0 -33
- data/spec/request_logger_spec.rb +0 -28
- data/spec/request_spec.rb +0 -25
- data/spec/response_spec.rb +0 -24
- data/spec/server_spec.rb +0 -30
- data/spec/spec_helper.rb +0 -35
data/spec/request_logger_spec.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
-
|
3
|
-
describe Siffer::RequestLogger do
|
4
|
-
msg = "<SIF_Message><SIF_SystemControl><SIF_Ping /><SIF_Header><SIF_SourceId>Test Source</SIF_SourceId></SIF_Header></SIF_SystemControl></SIF_Message>"
|
5
|
-
|
6
|
-
before(:each) do
|
7
|
-
@@log = []
|
8
|
-
@app = Rack::Builder.new do
|
9
|
-
use Siffer::RequestLogger, @@log
|
10
|
-
run Siffer::Server.new("admin" => "none")
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should log requests" do
|
15
|
-
res = Rack::MockRequest.new(@app).post("/", :input => msg)
|
16
|
-
@@log.size.should == 1
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should identify SIF_Source in log message" do
|
20
|
-
res = Rack::MockRequest.new(@app).post("/", :input => msg)
|
21
|
-
@@log[0].should match(/Ping request made by Test Source/)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should ignore request bodies that are not SIF based" do
|
25
|
-
res = Rack::MockRequest.new(@app).get("/")
|
26
|
-
@@log[0].should match(/Unknown request made by Unknown Source/)
|
27
|
-
end
|
28
|
-
end
|
data/spec/request_spec.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
-
|
3
|
-
# setup messages to use for mock requests
|
4
|
-
ping = "<SIF_Message><SIF_SystemControl><SIF_Ping /></SIF_SystemControl></SIF_Message>"
|
5
|
-
status = "<SIF_Message><SIF_SystemControl><SIF_Status /></SIF_SystemControl></SIF_Message>"
|
6
|
-
register = "<SIF_Message><SIF_Register /></SIF_Message>"
|
7
|
-
|
8
|
-
describe Siffer::Request do
|
9
|
-
it "should provide access to the body as a SIF_Message (Siffer::Message)" do
|
10
|
-
msg = Siffer::Messages::Register.new("register-source","source-name")
|
11
|
-
request = Siffer::Request.new('rack.input' => msg)
|
12
|
-
request.message.type.should == "Register"
|
13
|
-
request.message.source_id.should == "register-source"
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should identify message by predicate through body" do
|
17
|
-
Siffer::Protocol::ACCEPTABLE_PATHS.each do |name,path|
|
18
|
-
unless name == :root
|
19
|
-
req = Siffer::Request.new("rack.input" => eval(name.to_s))
|
20
|
-
req.should eval("be_#{name.to_s}")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
data/spec/response_spec.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),"spec_helper")
|
2
|
-
require 'webrick'
|
3
|
-
|
4
|
-
Thread.abort_on_exception = true
|
5
|
-
|
6
|
-
describe Siffer::Response do
|
7
|
-
it "should default content-type to application/xml with UTF-8" do
|
8
|
-
response = Siffer::Response.new()
|
9
|
-
response.content_type.should == Siffer::Messaging::MIME_TYPES["appxmlencoded"]
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should receive response from url,data" do
|
13
|
-
with_fake_server do |url|
|
14
|
-
response = Siffer::Response.from(url,"Hello World")
|
15
|
-
response.should be_successful
|
16
|
-
response.body.each { |line| line.should == "Hello World" }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
it "should return 500 for bad url" do
|
21
|
-
response = Siffer::Response.from("http://localhost:9999","Hello World")
|
22
|
-
response.should be_server_error
|
23
|
-
end
|
24
|
-
end
|
data/spec/server_spec.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper")
|
2
|
-
|
3
|
-
describe Siffer::Server do
|
4
|
-
it "should instantiate with default host, port, name, min_buffer" do
|
5
|
-
server = Siffer::Server.new("admin" => 'none')
|
6
|
-
server.host.should == "localhost"
|
7
|
-
server.port.should == 8300
|
8
|
-
server.name.should == "Default Server"
|
9
|
-
server.min_buffer.should == 1024
|
10
|
-
end
|
11
|
-
|
12
|
-
it "should allow defaults to be overriden" do
|
13
|
-
server = Siffer::Server.new("admin" => 'none',
|
14
|
-
"name" => "name",
|
15
|
-
"host" => "test",
|
16
|
-
"port" => 222,
|
17
|
-
"min_buffer" => 2048)
|
18
|
-
server.host.should == "test"
|
19
|
-
server.port.should == 222
|
20
|
-
server.name.should == "name"
|
21
|
-
server.min_buffer.should == 2048
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should require an admin URL" do
|
25
|
-
lambda {
|
26
|
-
server = Siffer::Server.new
|
27
|
-
}.should raise_error("Administration URL required")
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__),"..", "lib","siffer")
|
2
|
-
require 'spec'
|
3
|
-
|
4
|
-
# Configures a WEBrick server and yields URL. When passed a block
|
5
|
-
# starts and stops the server for the context. It returns what it
|
6
|
-
# receives from the request.
|
7
|
-
def with_fake_server(app = nil)
|
8
|
-
fake_app = app || lambda { |env| [200,{},env["rack.input"].read] }
|
9
|
-
server = WEBrick::HTTPServer.new(:Host => '0.0.0.0',:Port => 9202)
|
10
|
-
server.mount "/", Rack::Handler::WEBrick, fake_app
|
11
|
-
Thread.new { server.start }
|
12
|
-
trap(:INT) { server.shutdown }
|
13
|
-
yield "http://localhost:9202/" if block_given?
|
14
|
-
server.shutdown
|
15
|
-
end
|
16
|
-
|
17
|
-
# Helper method to iterate all of the ACCEPTABLE_PATHS
|
18
|
-
# on the specified component(Server/Agent). Yields
|
19
|
-
# the Response object for each Request.
|
20
|
-
def for_every_path(options = {}, &block)
|
21
|
-
component = options.delete(:on)
|
22
|
-
options["CONTENT_TYPE"] ||= Siffer::Messaging::MIME_TYPES["appxml"]
|
23
|
-
Siffer::Protocol::ACCEPTABLE_PATHS.each do |name,path|
|
24
|
-
res = Rack::MockRequest.new(component).post(path,options)
|
25
|
-
yield res
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Provides the minium to get a response from a Siffer::Server
|
30
|
-
def response_to(msg, &block)
|
31
|
-
Rack::MockRequest.new(Siffer::Server.new("admin" => "none")
|
32
|
-
).post("/",{
|
33
|
-
:input => msg,
|
34
|
-
"CONTENT_TYPE" => Siffer::Messaging::MIME_TYPES["appxml"]})
|
35
|
-
end
|