blob: e0dd243b5f9cded6f125fd80270d5f00606ba0e2 [file] [log] [blame]
--
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
local lu = require('luaunit')
local correlationContext = require('correlation_context')
local TC = require('tracing_context')
TestCorelationContext = {}
function TestCorelationContext:testFromSW8Value()
-- simple analyze
local context = correlationContext.fromSW8Value('dGVzdDE=:dDE=,dGVzdDI=:dDI=')
lu.assertNotNil(context)
lu.assertEquals(context["test1"], "t1")
lu.assertEquals(context["test2"], "t2")
-- analyze with empty value
context = correlationContext.fromSW8Value('dGVzdDE=:')
lu.assertNotNil(context)
lu.assertNil(context["test1"])
-- analyze with empty header
context = correlationContext.fromSW8Value('')
lu.assertNotNil(context)
lu.assertNotNil(#context == 0)
end
function TestCorelationContext:testSerialize()
-- serialize empty correlation
local context = correlationContext.fromSW8Value('')
local encode_context = correlationContext.serialize(context)
lu.assertNotNil(encode_context)
lu.assertEquals(encode_context, "")
-- serialize with multiple value
context = correlationContext.fromSW8Value('')
correlationContext.put(context, "test1", "t1")
correlationContext.put(context, "test2", "t2")
encode_context = correlationContext.serialize(context)
lu.assertNotNil(encode_context)
context = correlationContext.fromSW8Value(encode_context)
lu.assertNotNil(context)
lu.assertEquals(context["test1"], "t1")
lu.assertEquals(context["test2"], "t2")
-- serialize with empty value
context = correlationContext.fromSW8Value('')
correlationContext.put(context, "test1", "")
encode_context = correlationContext.serialize(context)
lu.assertNotNil(encode_context)
lu.assertEquals(encode_context, "")
end
function TestCorelationContext:testPut()
-- put with empty key and value
local context = correlationContext.fromSW8Value('')
correlationContext.put(context, nil, nil)
lu.assertEquals(correlationContext.serialize(context), '')
-- put nil to remove key
correlationContext.put(context, "test1", "t1")
correlationContext.put(context, "test1", nil)
lu.assertEquals(correlationContext.serialize(context), '')
-- overflow put
correlationContext.put(context, "test1", "t1")
correlationContext.put(context, "test2", "t2")
correlationContext.put(context, "test3", "t3")
correlationContext.put(context, "test4", "t4")
local encode_context = correlationContext.serialize(context)
lu.assertNotNil(encode_context)
local context = correlationContext.fromSW8Value(encode_context)
lu.assertEquals(context["test1"], "t1")
lu.assertEquals(context["test2"], "t2")
lu.assertEquals(context["test3"], "t3")
end
function TestCorelationContext:testTracingContext()
-- transform data
local context = TC.new("service", "instance")
local header = {}
header["sw8-correlation"] = 'dGVzdDI=:dDI=,dGVzdDE=:dDE=,dGVzdDM=:dDM='
TC.createEntrySpan(context, 'operation_name', nil, header)
lu.assertNotNil(context.correlation)
local contextCarrier = {}
TC.createExitSpan(context, 'operation_name', nil, 'peer', contextCarrier)
lu.assertNotNil(contextCarrier['sw8-correlation'])
local correlation = correlationContext.fromSW8Value(contextCarrier['sw8-correlation'])
lu.assertEquals(correlation["test1"], "t1")
lu.assertEquals(correlation["test2"], "t2")
-- transform data with adding data
TC.createExitSpan(context, 'operation_name', nil, 'peer', contextCarrier, {
test3 = "t3"
})
lu.assertNotNil(contextCarrier['sw8-correlation'])
correlation = correlationContext.fromSW8Value(contextCarrier['sw8-correlation'])
lu.assertEquals(correlation["test1"], "t1")
lu.assertEquals(correlation["test2"], "t2")
lu.assertEquals(correlation["test3"], "t3")
end
-- end TestTracingContext
os.exit( lu.LuaUnit.run() )