evegem 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,134 @@
1
+ require 'spec_helper'
2
+
3
+ module Eve
4
+
5
+ describe "BaseRegistry" do
6
+
7
+ before(:each) do
8
+ `mkdir -p ./application_test`
9
+ `mkdir -p ./application_test2`
10
+ @redis = Utest::InmemoryRedis.new
11
+ @app = Application.new(:display => :string, :redis => @redis)
12
+ end
13
+
14
+ after(:each) do
15
+ `rm -rf ./application_test`
16
+ `rm -rf ./application_test2`
17
+ `rm -f deleteme.txt deleteme2.txt`
18
+ `rm -rf ./eve.cmd`
19
+ end
20
+
21
+ describe "#cmd" do
22
+
23
+ before(:each) do
24
+ @app.cmd("appid")
25
+ @app.cmd("register add Eve::BaseRegistry")
26
+ @app.reset
27
+ end
28
+
29
+ describe "help" do
30
+
31
+ it "should know about the commands" do
32
+ @app.cmd("help Eve::BaseRegistry")[:data].should == {
33
+ "export" => [],
34
+ "import" => [],
35
+ "sleep" => [],
36
+ "ruby" => [],
37
+ }
38
+ end
39
+
40
+ end
41
+
42
+ describe "export" do
43
+
44
+ it "should handle no file" do
45
+ result = @app.cmd("export")
46
+ result[:data].should == "./eve.cmd"
47
+ @app.history.should == ["Exported all commands to ./eve.cmd -- reload using 'import ./eve.cmd'\n"]
48
+ IO.read("./eve.cmd").should == ""
49
+ end
50
+
51
+ it "should store explicit cmds" do
52
+ @app.cmd("version",true,false)
53
+ @app.cmd("source --show-password",true,true)
54
+ @app.cmd("ls",true,true)
55
+ @app.cmd("target",true)
56
+
57
+ result = @app.cmd("export")
58
+ result[:data].should == "./eve.cmd"
59
+ IO.read("./eve.cmd").should == "source --show-password\nls"
60
+ end
61
+
62
+ it "should use file if provided" do
63
+ @app.cmd("version",true,true)
64
+ @app.cmd("source --show-password",true,true)
65
+
66
+ result = @app.cmd("export ./application_test/myeve.cmd")
67
+ result[:data].should == "./application_test/myeve.cmd"
68
+ IO.read("./application_test/myeve.cmd").should == "version\nsource --show-password"
69
+ end
70
+
71
+ end
72
+
73
+ describe "import" do
74
+
75
+ it "should handle no explicit file provided" do
76
+ IO.write("./eve.cmd","version")
77
+ result = @app.cmd("import")
78
+ result[:data].should == "./eve.cmd"
79
+ @app.history.should == ["Importing comamnds from ./eve.cmd\n", "eve #{$$}, version 0.1.2\n", "Finished importing 1 command (./eve.cmd)\n"]
80
+ end
81
+
82
+ it "should ignore empty commands" do
83
+ IO.write("./eve.cmd","\n\n\n #about to call version\nversion")
84
+ result = @app.cmd("import")
85
+ result[:data].should == "./eve.cmd"
86
+ @app.history.should == ["Importing comamnds from ./eve.cmd\n", "eve #{$$}, version 0.1.2\n", "Finished importing 1 command (./eve.cmd)\n"]
87
+ end
88
+
89
+ it "should not track the import, but rather the internal commands" do
90
+ IO.write("./eve.cmd","version")
91
+ @app.cmd("import")
92
+
93
+ @app.cmds.should == ["version"]
94
+ end
95
+
96
+ it "should use file if provided" do
97
+ IO.write("./application_test/myeve.cmd","version")
98
+ result = @app.cmd("import ./application_test/myeve.cmd")
99
+ result[:data].should == "./application_test/myeve.cmd"
100
+ @app.history.should == ["Importing comamnds from ./application_test/myeve.cmd\n", "eve #{$$}, version 0.1.2\n", "Finished importing 1 command (./application_test/myeve.cmd)\n"]
101
+ end
102
+
103
+ end
104
+
105
+ describe "ruby" do
106
+
107
+ it "should run arbitrary ruby" do
108
+ @app.cmd("ruby $$").should == { :data => $$, :status => :continue, :track_cmd => true }
109
+ @app.history.should == [ "$$: #{$$}\n" ]
110
+ end
111
+
112
+ end
113
+
114
+ describe "sleep" do
115
+
116
+ it "should sleep for a certain period of time" do
117
+ Kernel.should_receive(:sleep).with(300)
118
+ @app.cmd("sleep 5minutes").should == { :data => 300, :status => :continue, :track_cmd => true }
119
+ @app.history.should == [ "Sleeping for 5 minutes (300 seconds)\n" ]
120
+ end
121
+
122
+ it "should only show seconds if that's the output" do
123
+ Kernel.should_receive(:sleep).with(10)
124
+ @app.cmd("sleep 10seconds").should == { :data => 10, :status => :continue, :track_cmd => true }
125
+ @app.history.should == [ "Sleeping for 10 seconds\n" ]
126
+ end
127
+
128
+ end
129
+
130
+
131
+ end
132
+
133
+ end
134
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ module Eve
4
+
5
+ describe EventServer do
6
+
7
+ before(:each) do
8
+ @conn = MockConnection.new
9
+ @app = Application.new(:display => :string, :redis => Utest::InmemoryRedis.new)
10
+ @conn.app = @app
11
+ @server = EventServer.new(@conn, { :appid => "mg" })
12
+ end
13
+
14
+ describe "#initialize" do
15
+
16
+ it "should accept an connection and appid" do
17
+ @server = EventServer.new(@conn, { :appid => "mg" })
18
+ @server.connection.should == @conn
19
+ @server.appid.should == "mg"
20
+ end
21
+
22
+ end
23
+
24
+ describe "#handle_args" do
25
+
26
+ it "should return default data" do
27
+ EventServer.handle_args([]).should == { :server => "0.0.0.0", :port => "4848", :appid => "myeve" }
28
+ end
29
+
30
+ it "should extract from args" do
31
+ EventServer.handle_args(["--server","1.1.1.1","--port","1234","--id","youreve"]).should == { :server => "1.1.1.1", :port => "1234", :appid => "youreve" }
32
+ end
33
+
34
+ end
35
+
36
+ describe "#app" do
37
+
38
+ it "should create an application if nil" do
39
+ @conn.app = nil
40
+ @server.app.should_not == nil
41
+ @server.app.should == @server.connection.app
42
+ @server.connection.app.console.display.should == { :event_machine => @conn }
43
+ @server.connection.app.system_calls.display.should == { :filename => "./eve_server_calls.log" }
44
+ end
45
+
46
+ end
47
+
48
+ describe "#post_init" do
49
+
50
+ it "should create an application" do
51
+ @server.post_init
52
+ @server.connection.app.history.should == [ "Appid: mg\n" ]
53
+ end
54
+
55
+ end
56
+
57
+ describe "#receive_data" do
58
+
59
+ it "should run that command" do
60
+ @server.receive_data("version")
61
+ @app.history.should == [ "eve, version 0.1.2\n" ]
62
+ end
63
+
64
+ it "should exit if exited" do
65
+ @conn.should_receive(:close_connection)
66
+ @server.receive_data("exit")
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -0,0 +1,89 @@
1
+ require 'spec_helper'
2
+
3
+ module Eve
4
+
5
+ describe FileNotifierServer do
6
+
7
+ before(:each) do
8
+ @conn = MockConnection.new
9
+ @app = Application.new(:display => :string, :redis => Utest::InmemoryRedis.new)
10
+ @conn.app = @app
11
+ @server = FileNotifierServer.new(@conn, { :appid => "mg" })
12
+ end
13
+
14
+ describe "#initialize" do
15
+
16
+ it "should accept an connection and data" do
17
+ @server = FileNotifierServer.new(@conn, { :server => "1.1.1.1", :port => "1234", :source => "/a/b/c", :appid => "mg", :inits => ["register add Eve::BaseRegistry"], :callbacks => ["source fetch /a/b/c"] })
18
+ @server.connection.should == @conn
19
+ @server.server.should == "1.1.1.1"
20
+ @server.port.should == "1234"
21
+ @server.source.should == "/a/b/c"
22
+ @server.source.to_s.should == "/a/b/c"
23
+ @server.appid.should == "mg"
24
+ @server.callbacks.should == ["source fetch /a/b/c"]
25
+ @server.inits.should == ["register add Eve::BaseRegistry"]
26
+ end
27
+
28
+ end
29
+
30
+ describe "#handle_args" do
31
+
32
+ it "should return default data" do
33
+ FileNotifierServer.handle_args([]).should == { :server => nil, :port => nil, :source => nil, :appid => nil, :callbacks => [], :inits => [] }
34
+ end
35
+
36
+ it "should extract from args" do
37
+ FileNotifierServer.handle_args(["--server","1.1.1.1","--port","1234","--id","youreve","--source","/tmp", "--callback", "do", "something", "--callback", "and", "this", "--init", "do", "a", "--init", "do", "b"]).should == { :server => "1.1.1.1", :port => "1234", :source => "/tmp", :appid => "youreve", :inits => [ "do a", "do b" ], :callbacks => ["do something", "and this"]}
38
+ end
39
+
40
+ end
41
+
42
+ describe "#app" do
43
+
44
+ before(:each) do
45
+ @server.connection.app = nil
46
+ end
47
+
48
+ it "should be local if appid set" do
49
+ @server = FileNotifierServer.new(@conn, { :appid => "mg" })
50
+ @server.app.console.display.should == :stdio
51
+ end
52
+
53
+ it "should connect to event server if provided" do
54
+ @server = FileNotifierServer.new(@conn, { :server => "1.1.1.1", :port => "4848" })
55
+ @server.app.console.display.should == :stdio
56
+ end
57
+
58
+ end
59
+
60
+ describe "#post_init" do
61
+
62
+ it "should be local if appid set" do
63
+ @app.should_receive(:cmd).with("appid mg")
64
+ @server = FileNotifierServer.new(@conn, { :appid => "mg", :source => "/tmp" })
65
+ @server.post_init
66
+ end
67
+
68
+ it "should connect to event server if provided" do
69
+ @app.should_receive(:cmd).with("event 1.1.1.1:4848")
70
+ @server = FileNotifierServer.new(@conn, { :server => "1.1.1.1", :port => "4848", :source => "/tmp" })
71
+ @server.post_init
72
+ end
73
+
74
+ end
75
+
76
+ describe "#file_modified" do
77
+
78
+ it "should run that command" do
79
+ @app.should_receive(:cmd).with("source fetch /a/b/c")
80
+ @app.should_receive(:cmd).with("do something self")
81
+ @server = FileNotifierServer.new(@conn, { :source => "/a/b/c", :callbacks => [ "source fetch /a/b/c", "do something self" ] })
82
+ @server.file_modified
83
+ end
84
+
85
+ end
86
+
87
+ end
88
+
89
+ end
@@ -0,0 +1,23 @@
1
+ module Sample
2
+
3
+ class NinerRegistry < Eve::Registry
4
+
5
+ def self.available
6
+ { "niner-test" => [], "version" => [] }
7
+ end
8
+
9
+ def self.call_niner_test(app,result,data,display_messages)
10
+ result[:data] = data
11
+ app.console.print("NINER: #{result[:data]}\n") if display_messages
12
+ result
13
+ end
14
+
15
+ def self.call_version(app,result,data,display_messages)
16
+ result[:data] = "4848"
17
+ app.console.print("version 4848\n") if display_messages
18
+ result
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,28 @@
1
+ module Eve
2
+
3
+ describe Layout do
4
+
5
+ before(:each) do
6
+ @layout = Layout.new
7
+ end
8
+
9
+ describe "add_column" do
10
+
11
+ it "should accept a type, filter and order" do
12
+ expected = { :column_type => :id, :filter => "[a-zA-Z].*[0-9]", :order => 9 }
13
+ @layout.add_column("ID;[a-zA-Z].*[0-9];9").should == expected
14
+ @layout.columns.should == [ expected ]
15
+ end
16
+
17
+ it "should return nil if invalid input" do
18
+ @layout.add_column(nil).should == nil
19
+ @layout.columns.should == [ ]
20
+ @layout.add_column("a").should == nil
21
+ @layout.columns.should == [ ]
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,246 @@
1
+ require 'spec_helper'
2
+
3
+ module Eve
4
+
5
+ describe Message do
6
+
7
+ before(:each) do
8
+ @app = Application.new(:display => :string, :redis => Utest::InmemoryRedis.new)
9
+ @console = @app.console
10
+ @system_calls = @app.system_calls
11
+ @msg = @app.message
12
+ end
13
+
14
+ describe "print_version" do
15
+
16
+ it "should default" do
17
+ @msg.print_version(123)
18
+ @console.history.should == [ "eve 123 (#{$$}), version 0.1.2\n" ]
19
+ end
20
+
21
+ it "should support nil appids" do
22
+ @msg.print_version(nil)
23
+ @console.history.should == [ "eve, version 0.1.2\n" ]
24
+ end
25
+
26
+ it "should ignore process id if same as name" do
27
+ @msg.print_version($$)
28
+ @console.history.should == [ "eve #{$$}, version 0.1.2\n" ]
29
+ end
30
+
31
+ end
32
+
33
+ describe "print_registry_path" do
34
+
35
+ it "should handle none" do
36
+ @msg.print_registry_path([])
37
+ @console.history.should == ["No paths have been provided.\n"]
38
+ end
39
+
40
+ it "should handle none" do
41
+ @msg.print_registry_path(["a","b"])
42
+ @console.history.should == ["The following paths have been set:\n -- a\n -- b\n"]
43
+ end
44
+
45
+ end
46
+
47
+ describe "print_error" do
48
+
49
+ it "should track both messages" do
50
+ begin
51
+ a.cannot_do_that
52
+ rescue Exception => ex
53
+ @msg.print_error("a",ex)
54
+ end
55
+ @console.history[0].should == "a\n"
56
+ @console.history[1][0..39].should == " undefined local variable or method `a'"
57
+ @console.history[2].size.should > 100
58
+ end
59
+
60
+ end
61
+
62
+ describe "print_system_call" do
63
+
64
+ it "should track the calling" do
65
+ @msg.print_system_call("abc")
66
+ @system_calls.history.should == [ "CALLING: abc\n" ]
67
+ end
68
+
69
+ end
70
+
71
+ describe "print_*" do
72
+
73
+ it "print_exit" do
74
+ @msg.print_exit
75
+ @console.history.should == [ "bye\n" ]
76
+ end
77
+
78
+ it "print_unknown_cmd" do
79
+ @msg.print_unknown_cmd("abc")
80
+ @console.history.should == [ "UNKNOWN CMD: abc\n" ]
81
+ end
82
+
83
+ it "print_process_id" do
84
+ @msg.print_process_id("abc123")
85
+ @console.history.should == [ "Process Id: abc123\n" ]
86
+ end
87
+
88
+ it "print_ruby_call" do
89
+ @msg.print_ruby_call("a","b")
90
+ @console.history.should == [ "a: b\n" ]
91
+ end
92
+
93
+ describe "print_sleep" do
94
+
95
+ it "should show minutes and seconds" do
96
+ @msg.print_sleep(600)
97
+ @console.history.should == [ "Sleeping for 10 minutes (600 seconds)\n" ]
98
+ end
99
+
100
+ it "should only show seconds if < 1 minute" do
101
+ @msg.print_sleep(10)
102
+ @console.history.should == [ "Sleeping for 10 seconds\n" ]
103
+
104
+ end
105
+
106
+ end
107
+
108
+ it "print_shell_mode" do
109
+ @msg.print_shell_mode
110
+ @console.history.should == [ "Entering shell mode, to exit this mode, type 'poll'\n" ]
111
+ end
112
+
113
+ it "print_event_mode" do
114
+ @msg.print_event_mode("0.0.0.0:4848")
115
+ @console.history.should == [ "Messages will be routed to 0.0.0.0:4848\n" ]
116
+ end
117
+
118
+ describe "print_poll_details" do
119
+
120
+ it "should say it has nothing to do" do
121
+ @msg.print_poll_details(1800,[])
122
+ @console.history.should == [ "Poll will check every 30 minutes (1800 seconds), but it has nothing to run.\n" ]
123
+ end
124
+
125
+ it "should say it has something to do" do
126
+ @msg.print_poll_details(1800,["watch x","watch y"])
127
+ @console.history.should == [ "Poll will check every 30 minutes (1800 seconds), and send the following events:\n - watch x\n - watch y\n" ]
128
+ end
129
+
130
+ end
131
+
132
+ describe "print_poll_mode" do
133
+
134
+ it "should show minutes and seconds" do
135
+ @msg.print_poll_mode("abc123", 600)
136
+ @console.history.should == [ "Entering poll mode with checks every 10 minutes (600 seconds), to exit this mode, run 'eve --interrupt abc123' from another terminal session\n" ]
137
+ end
138
+
139
+ it "should only show seconds if < 1 minute" do
140
+ @msg.print_poll_mode("abc123", 10)
141
+ @console.history.should == [ "Entering poll mode with checks every 10 seconds, to exit this mode, run 'eve --interrupt abc123' from another terminal session\n" ]
142
+ end
143
+
144
+ end
145
+
146
+ it "print_app_interrupted" do
147
+ @msg.print_app_interrupted("abc123")
148
+ @console.history.should == [ "Interrupted eve abc123, should now be in shell mode\n" ]
149
+ end
150
+
151
+ it "print_unknown_handler" do
152
+ @msg.print_unknown_handler("Blah")
153
+ @console.history.should == [ "Unknown handler Blah\n" ]
154
+ end
155
+
156
+ describe "print_help" do
157
+
158
+ it "default" do
159
+ @msg.print_help({ "a" => ["list","delete"], "b" => [] })
160
+ @console.history.should == [ "Available commands are:\n a [ list | delete ]\n b\n" ]
161
+ end
162
+
163
+ it "empty filter" do
164
+ @msg.print_help({ "a" => ["list","delete"], "b" => [] },"")
165
+ @console.history.should == [ "Available commands are:\n a [ list | delete ]\n b\n" ]
166
+ end
167
+
168
+ it "filter" do
169
+ @msg.print_help({ "a" => ["list","delete"], "b" => [] },"Blah")
170
+ @console.history.should == [ "Available commands (Blah) are:\n a [ list | delete ]\n b\n" ]
171
+ end
172
+
173
+ end
174
+
175
+
176
+ it "print_exported_commands" do
177
+ @msg.print_exported_commands("./myeve.cmd")
178
+ @console.history.should == ["Exported all commands to ./myeve.cmd -- reload using 'import ./myeve.cmd'\n"]
179
+ end
180
+
181
+ it "print_importing_commands" do
182
+ @msg.print_importing_commands("./myeve.cmd")
183
+ @console.history.should == ["Importing comamnds from ./myeve.cmd\n"]
184
+ end
185
+
186
+ describe "print_importing_complete" do
187
+
188
+ it "none" do
189
+ @msg.print_importing_complete("./myeve.cmd",0)
190
+ @console.history.should == ["No commands found!\n"]
191
+ end
192
+
193
+ it "one" do
194
+ @msg.print_importing_complete("./myeve.cmd",1)
195
+ @console.history.should == ["Finished importing 1 command (./myeve.cmd)\n"]
196
+ end
197
+
198
+ it "some" do
199
+ @msg.print_importing_complete("./myeve.cmd",2)
200
+ @console.history.should == ["Finished importing 2 commands (./myeve.cmd)\n"]
201
+ end
202
+
203
+ end
204
+
205
+ it "print_cmd_error" do
206
+ @msg.print_cmd_error("a 1 2 3")
207
+ @console.history.should == [ "An error occurred for 'a 1 2 3'\n" ]
208
+ end
209
+
210
+ it "print_server_init" do
211
+ @msg.print_server_init
212
+ @console.history.should == [ "Connection Established\n" ]
213
+ end
214
+
215
+ it "print_appid" do
216
+ @msg.print_appid(123)
217
+ @console.history.should == [ "Appid: 123\n" ]
218
+ end
219
+
220
+ it "print_registry_reloaded" do
221
+ @msg.print_registry_reloaded
222
+ @console.history.should == [ "Registry reloaded.\n" ]
223
+ end
224
+
225
+ end
226
+
227
+ describe "print_nothing_registered" do
228
+
229
+ it "should handle none" do
230
+ @msg.print_registry({})
231
+ @console.history.should == [ "Nothing registered.\n" ]
232
+ end
233
+
234
+ it "should handle some" do
235
+ @msg.print_registry({ "CharlieTest" => ["x"], "Sample::EchoTest" => ["y"] })
236
+ @app.history.should == [ "The following has been registered:\n - CharlieTest (x)\n - Sample::EchoTest (y)\n" ]
237
+ end
238
+
239
+
240
+ end
241
+
242
+ end
243
+
244
+ end
245
+
246
+