Try lua json
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 05972cf..e0ff8c0 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -48,7 +48,7 @@
- name: 'Install Dependencies'
run: |
sudo luarocks install luaunit
- sudo luarocks install lua-cjson 2.1.0-1
+ sudo luarocks install lua-cjson
- name: 'Run Tests'
run: |
cd lib/skywalking
diff --git a/lib/skywalking/segment.lua b/lib/skywalking/segment.lua
index 3249c24..ea870e4 100644
--- a/lib/skywalking/segment.lua
+++ b/lib/skywalking/segment.lua
@@ -17,8 +17,7 @@
-- Segment represents a finished tracing context
-- Including all information to send to the SkyWalking OAP server.
-
-local cjson = require("cjson")
+local Util = require('util')
local Segment = {
trace_id,
@@ -33,6 +32,8 @@
-- Following SkyWalking official trace protocol v2
-- https://github.com/apache/skywalking-data-collect-protocol/blob/master/language-agent-v2/trace.proto
local SegmentProtocol = {
+ globalTraceIds,
+ traceSegmentId,
serviceId,
serviceInstanceId,
spans,
@@ -46,9 +47,32 @@
return o
end
--- Transform the segment object to the
+function SegmentProtocol:new()
+ local o = {}
+ setmetatable(o, self)
+ self.__index = self
+
+ o.globalTraceIds = {}
+
+ return o
+end
+
+-- Return SegmentProtocol
function Segment:transform()
- return cjson.encode(self)
+ local segmentBuilder = SegmentProtocol:new()
+ segmentBuilder.serviceId = self.service_id
+ segmentBuilder.globalTraceIds[1] = Util:id2String(self.trace_id)
+ segmentBuilder.traceSegmentId = Util:id2String(self.segment_id)
+ segmentBuilder.serviceId = self.service_id
+ segmentBuilder.serviceInstanceId = self.service_inst_id
+
+ segmentBuilder.spans = {}
+ for i, span in ipairs(self.spans)
+ do
+ segmentBuilder.spans[#segmentBuilder.spans + 1] = span:transform()
+ end
+
+ return segmentBuilder
end
return Segment
\ No newline at end of file
diff --git a/lib/skywalking/span_test.lua b/lib/skywalking/span_test.lua
index 5ed2ffa..a2265e0 100644
--- a/lib/skywalking/span_test.lua
+++ b/lib/skywalking/span_test.lua
@@ -19,7 +19,6 @@
local TC = require('tracing_context')
local Span = require('span')
local SpanLayer = require("span_layer")
-local cjson = require("cjson")
TestSpan = {}
function TestSpan:testNewEntry()
@@ -142,10 +141,6 @@
lu.assertEquals(#spanBuilder.logs, 1)
lu.assertEquals(spanBuilder.logs[1].data["logkey"], "logvalue")
lu.assertEquals(spanBuilder.logs[1].data["logkey1"], "logvalue2")
-
- local inJSON = cjson.encode(spanBuilder)
- lu.assertTrue(string.len(inJSON) > 0)
- -- print(inJSON)
end
-- end TestSpan
diff --git a/lib/skywalking/tracing_context_test.lua b/lib/skywalking/tracing_context_test.lua
index 63b47ad..d0c0dd1 100644
--- a/lib/skywalking/tracing_context_test.lua
+++ b/lib/skywalking/tracing_context_test.lua
@@ -69,6 +69,8 @@
local isSegmentFinished, segment = context:drainAfterFinished()
lu.assertEquals(span2, segment.spans[1])
lu.assertEquals(span1, segment.spans[2])
+
+ local segmentBuilder = segment:transform()
end
function TestTracingContext:testNewNoOP()