palta 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e3ae0583eaf6f25b6974f5757d390b1ad8b4ae7
4
- data.tar.gz: 38eeb36b97e1f8c2111c0d84d1004bf88792cd3b
3
+ metadata.gz: f4064532eeb7881b19721d0b685be446575ee14a
4
+ data.tar.gz: 3872b4a60da1b215c106224ca8ff0d8a3a0d3699
5
5
  SHA512:
6
- metadata.gz: 0de3df533c7ce3f10a7c318cb050dc6e8a2e738250f3add319ff1d148f2fd996d5f3c2141ea1807e08550035ee82b7e31eac493148f8714b3debd4848bedfcb5
7
- data.tar.gz: 46e0c53ab2696689fb7d328d7a6939f081d07e6c67c323e0ec9c99241f35a25516b8ccec6e851660e53c315f1362cb66e9e30b6455162c38b24e10d06a48243a
6
+ metadata.gz: 2d5560f48a8de880e50c24354966c7f2a82f60c7fe77cf4152f659d5687a46914547207b956388fe778bf9be605e7d4953deafba7d368de7f455428f4bc5f8e7
7
+ data.tar.gz: bae51a0a05c61176f5315c02dd007b422fa57413d72c4ade69433cb2e8b8d7a5503c8b7bf747f4d7979e7634adb1e543e3cea0d391ca7bf6093d2cec18e3cc59
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Palta
2
2
 
3
+ [![Build Status](https://travis-ci.org/ignc/palta.png?branch=master)](https://travis-ci.org/ignc/palta)
4
+
3
5
  Simple server for simple (remote) logging. Right now it's just an experimental work in progress.
4
6
 
5
7
  It receives messages and triggers actions.
data/Rakefile CHANGED
@@ -11,4 +11,4 @@ Rake::TestTask.new do |test|
11
11
  test.libs << "test"
12
12
  end
13
13
 
14
- task :default => [:rdoc, :test]
14
+ task :default => [:test]
@@ -6,10 +6,17 @@ module Palta
6
6
 
7
7
  class Client
8
8
 
9
- def initialize host, port, api_key
9
+ attr_reader :host, :port
10
+
11
+ def initialize host="localhost", port=8888
12
+ @host = host
13
+ @port = port
10
14
  end
11
15
 
12
16
  def send data
17
+ TCPSocket.open @host, @port do |s|
18
+ s.send data.to_json, 0
19
+ end
13
20
  end
14
21
 
15
22
  end
@@ -6,7 +6,7 @@ module Palta
6
6
 
7
7
  class Server
8
8
 
9
- attr_reader :host, :port, :debug, :dir, :max_threads
9
+ attr_reader :host, :port, :debug, :dir, :max_threads, :msg_recv
10
10
 
11
11
  def initialize options = {}
12
12
  @host = options[:host] || "localhost"
@@ -15,6 +15,7 @@ module Palta
15
15
  @dir = options[:dir] || "./.palta/data"
16
16
  @max_threads = options[:max_threads] || 8
17
17
  @threads = []
18
+ @msg_recv = 0
18
19
  end
19
20
 
20
21
  def actions &block
@@ -22,6 +23,7 @@ module Palta
22
23
  end
23
24
 
24
25
  def on_msg msg
26
+ @msg_recv += 1
25
27
  on_any(msg)
26
28
  send("on_#{msg[:type]}", msg)
27
29
  end
@@ -37,9 +39,8 @@ module Palta
37
39
  loop do
38
40
  client = @server.accept
39
41
  data = client.recv(1024)
40
- if @debug
41
- puts "[Palta::Server] thread #{i} recv: #{data}"
42
- end
42
+ client.close
43
+ puts "[Palta::Server] thread #{i} recv: #{data}" if @debug
43
44
  msg = JSON.parse(data, :symbolize_names => true)
44
45
  on_msg(msg)
45
46
  end
@@ -1,3 +1,3 @@
1
1
  module Palta
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,23 @@
1
+ require_relative "./test_helper"
2
+ require "test/unit"
3
+ require "palta"
4
+
5
+ class TestClient < Test::Unit::TestCase
6
+
7
+ def test_default_creation_yields_no_error
8
+ c = Palta::Client.new
9
+ end
10
+
11
+ def test_creation_with_paramaters_ok
12
+ c = Palta::Client.new "192.168.0.1", 8989
13
+ assert_equal "192.168.0.1", c.host
14
+ assert_equal 8989, c.port
15
+ end
16
+
17
+ def test_with_wrong_host_should_fail_to_send
18
+ c = Palta::Client.new "255.255.255.254"
19
+ assert_raise Errno::ENETUNREACH do
20
+ c.send({ :hola => "hi"})
21
+ end
22
+ end
23
+ end
@@ -2,16 +2,13 @@ require_relative "./test_helper"
2
2
  require "test/unit"
3
3
  require "palta"
4
4
 
5
- class TestBasic < Test::Unit::TestCase
5
+ class TestServer < Test::Unit::TestCase
6
6
 
7
7
  def test_default_creation_yields_no_error
8
- # Default creation should be valid in most environments
9
8
  s = Palta::Server.new
10
9
  end
11
10
 
12
11
  def test_creation_with_paramaters_ok
13
- # With (a priori) correct data, the user should be able to
14
- # instantiate a Palta::Server object
15
12
  options = {
16
13
  :host => "127.0.0.1",
17
14
  :port => 9898,
@@ -27,7 +24,7 @@ class TestBasic < Test::Unit::TestCase
27
24
  assert_equal options[:max_threads], s.max_threads
28
25
  end
29
26
 
30
- def test_server_should_fail_to_start
27
+ def test_with_wrong_port_should_fail_to_start
31
28
  # Without root permissions the server should fail to start in a
32
29
  # port number lower than 1024
33
30
  options = {
@@ -40,4 +37,16 @@ class TestBasic < Test::Unit::TestCase
40
37
  end
41
38
  end
42
39
 
40
+ def test_with_wrong_host_should_fail_to_start
41
+ # See http://stackoverflow.com/questions/10456044/what-is-a-good-invalid-ip-address-to-use-for-unit-tests
42
+ # for info about IP addresses that should not be routed anywhere
43
+ options = {
44
+ :host => "192.0.2.1"
45
+ }
46
+ s = Palta::Server.new options
47
+ assert_raise Errno::EADDRNOTAVAIL do
48
+ s.start
49
+ s.stop
50
+ end
51
+ end
43
52
  end
@@ -0,0 +1,30 @@
1
+ require_relative "./test_helper"
2
+ require "test/unit"
3
+ require "palta"
4
+
5
+ class TestServerClient < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @s = Palta::Server.new
9
+ @c = Palta::Client.new
10
+ @s.actions do
11
+ def on_test
12
+ # nothing
13
+ end
14
+ end
15
+ @s.start
16
+ end
17
+
18
+ def test_message_triggers_action
19
+ @c.send({
20
+ :type => "test",
21
+ :data => "this is a test"
22
+ })
23
+ assert_equal 1, @s.msg_recv
24
+ end
25
+
26
+ def teardown
27
+ @s.stop
28
+ end
29
+
30
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: palta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Contreras Pinilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-21 00:00:00.000000000 Z
11
+ date: 2013-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -47,6 +47,7 @@ extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
49
  - .gitignore
50
+ - .travis.yml
50
51
  - Gemfile
51
52
  - LICENSE.txt
52
53
  - README.md
@@ -60,8 +61,10 @@ files:
60
61
  - lib/palta/server.rb
61
62
  - lib/palta/version.rb
62
63
  - palta.gemspec
64
+ - test/test_client.rb
63
65
  - test/test_helper.rb
64
66
  - test/test_server.rb
67
+ - test/test_server_client.rb
65
68
  homepage: http://github.com/ignc/palta
66
69
  licenses:
67
70
  - MIT
@@ -88,5 +91,7 @@ specification_version: 4
88
91
  summary: Simple Ruby server made for logging remote messages and triggering actions
89
92
  according to customizable criteria
90
93
  test_files:
94
+ - test/test_client.rb
91
95
  - test/test_helper.rb
92
96
  - test/test_server.rb
97
+ - test/test_server_client.rb