utracker 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Build Status](https://travis-ci.org/nicoolas25/micro-tracker.svg?branch=development)](https://travis-ci.org/nicoolas25/micro-tracker)
|
4
4
|
[![Code Climate](https://codeclimate.com/github/nicoolas25/micro-tracker/badges/gpa.svg)](https://codeclimate.com/github/nicoolas25/micro-tracker)
|
5
5
|
[![Test Coverage](https://codeclimate.com/github/nicoolas25/micro-tracker/badges/coverage.svg)](https://codeclimate.com/github/nicoolas25/micro-tracker)
|
6
|
+
[![Gem Version](https://badge.fury.io/rb/utracker.svg)](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
|