utracker 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/README.md +7 -0
- data/lib/utracker.rb +1 -0
- data/lib/utracker/drawer.rb +36 -0
- data/lib/utracker/version.rb +1 -1
- data/spec/utracker/drawer/node_spec.rb +17 -0
- data/spec/utracker/drawer_spec.rb +32 -0
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 127d98e8fb9eda9a1ce15e7a4aae35965c3552f4
|
4
|
+
data.tar.gz: 172d5d04d4ba8a6de4687fb6c4ca3278234adda9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64b7571d649d4485b12f1abf28a74c43c261ffc875e405bfb274e7b78b6dca97e763cbf8a8f87d9f2bb1bd334b2db114729217d437d917aec63894421e31c67a
|
7
|
+
data.tar.gz: 63f94dc7e0dc4da286625d8d29ca00aea6b0cf60a3ac8b596e6b979de81f046bd2e60374cc38087af3ae55f839f940e44039356a38609a535e203444e4b6f9e5
|
data/README.md
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
[](https://travis-ci.org/nicoolas25/micro-tracker)
|
4
4
|
[](https://codeclimate.com/github/nicoolas25/micro-tracker)
|
5
5
|
[](https://codeclimate.com/github/nicoolas25/micro-tracker)
|
6
|
+
[](http://badge.fury.io/rb/utracker)
|
6
7
|
|
7
8
|
Modern web application are more and more designed with micro-services. Those services exchange messages in order to communicate with each other. Eventually your architecture ends with a graph of services that could be quite complex. Micro-tracker is all about tracking this micro-service's interactions in order to know which service received which message, when and from which other service. It will help you monitor your architecture and debug faster.
|
8
9
|
|
@@ -14,8 +15,14 @@ Modern web application are more and more designed with micro-services. Those ser
|
|
14
15
|
* [x] Create messages using a parent message.
|
15
16
|
* [x] Allow to filter the payload in logs.
|
16
17
|
|
18
|
+
## Backends
|
19
|
+
|
20
|
+
* MongoDB through [utracker-mongodb][backend-mongodb]
|
21
|
+
|
17
22
|
## Useful tools on top of this
|
18
23
|
|
19
24
|
* [ ] Broken service alert
|
20
25
|
* [ ] Scaling advisor
|
21
26
|
* [ ] Replay messages after a failure
|
27
|
+
|
28
|
+
[backend-mongodb]: https://github.com/nicoolas25/micro-tracker-mongodb
|
data/lib/utracker.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
class Utracker::Drawer
|
2
|
+
|
3
|
+
Node = Struct.new(:service, :edges) do
|
4
|
+
def ==(other)
|
5
|
+
other.service == service
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def write_graph(filename)
|
10
|
+
File.open(filename, 'w') do |file|
|
11
|
+
file.puts "digraph message_flow {"
|
12
|
+
file.puts " node [style=filled fillcolor=white]"
|
13
|
+
file.puts " rankdir=LR"
|
14
|
+
write_graph_into(file)
|
15
|
+
file.puts "}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
protected
|
20
|
+
|
21
|
+
def build_graph
|
22
|
+
fail 'Please implement me in subclasses.'
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def write_graph_into(file)
|
28
|
+
build_graph.each do |node|
|
29
|
+
file.puts " #{node.service}"
|
30
|
+
node.edges && node.edges.each do |connected_node|
|
31
|
+
file.puts " #{node.service} -> #{connected_node.service}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/lib/utracker/version.rb
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
RSpec.describe Utracker::Drawer::Node do
|
2
|
+
let(:instance) { described_class.new('name') }
|
3
|
+
|
4
|
+
describe "#==" do
|
5
|
+
subject { instance == other_instance }
|
6
|
+
|
7
|
+
context "when the other instance has the same service name" do
|
8
|
+
let(:other_instance) { described_class.new(instance.service) }
|
9
|
+
it { is_expected.to be true }
|
10
|
+
end
|
11
|
+
|
12
|
+
context "when the other instance has a different service name" do
|
13
|
+
let(:other_instance) { described_class.new('name2') }
|
14
|
+
it { is_expected.to be false }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
RSpec.describe Utracker::Drawer do
|
2
|
+
let(:instance) { described_class.new }
|
3
|
+
|
4
|
+
describe '#write_graph' do
|
5
|
+
subject { instance.write_graph(filename) }
|
6
|
+
|
7
|
+
let(:filename) { "spec/test_graph.dot" }
|
8
|
+
let(:content) { File.read(filename) }
|
9
|
+
let(:graph) do
|
10
|
+
node1 = Utracker::Drawer::Node.new('node1', [])
|
11
|
+
node2 = Utracker::Drawer::Node.new('node2', nil)
|
12
|
+
node1.edges << node2
|
13
|
+
[node1, node2]
|
14
|
+
end
|
15
|
+
|
16
|
+
before { allow(instance).to receive(:build_graph).and_return(graph) }
|
17
|
+
after { File.delete(filename) }
|
18
|
+
|
19
|
+
it "writes the expected file" do
|
20
|
+
subject
|
21
|
+
expect(content).to eq <<-EXPECTED_FILE
|
22
|
+
digraph message_flow {
|
23
|
+
node [style=filled fillcolor=white]
|
24
|
+
rankdir=LR
|
25
|
+
node1
|
26
|
+
node1 -> node2
|
27
|
+
node2
|
28
|
+
}
|
29
|
+
EXPECTED_FILE
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: utracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas ZERMATI
|
@@ -126,11 +126,14 @@ files:
|
|
126
126
|
- examples/services.out
|
127
127
|
- examples/services.rb
|
128
128
|
- lib/utracker.rb
|
129
|
+
- lib/utracker/drawer.rb
|
129
130
|
- lib/utracker/logger.rb
|
130
131
|
- lib/utracker/logger/stdout_logger.rb
|
131
132
|
- lib/utracker/message.rb
|
132
133
|
- lib/utracker/version.rb
|
133
134
|
- spec/spec_helper.rb
|
135
|
+
- spec/utracker/drawer/node_spec.rb
|
136
|
+
- spec/utracker/drawer_spec.rb
|
134
137
|
- spec/utracker/logger/event_spec.rb
|
135
138
|
- spec/utracker/logger_spec.rb
|
136
139
|
- spec/utracker/message/logging_spec.rb
|
@@ -163,6 +166,8 @@ specification_version: 4
|
|
163
166
|
summary: Track micro-services interactions.
|
164
167
|
test_files:
|
165
168
|
- spec/spec_helper.rb
|
169
|
+
- spec/utracker/drawer/node_spec.rb
|
170
|
+
- spec/utracker/drawer_spec.rb
|
166
171
|
- spec/utracker/logger/event_spec.rb
|
167
172
|
- spec/utracker/logger_spec.rb
|
168
173
|
- spec/utracker/message/logging_spec.rb
|