bugfix: `require` other libraries, missing `skywalking` parent folder. (#44)

* bugfix: `require` other libraries, missing `skywalking` parent folder.

* bugfix: fixed Lua load path.

* test: print more information when failed.

* bugfix: fixed the wrong load Lua path for  E2E testing.

* chore: move the "resty" folder out of "skywalking" , they should be same level .

* bugfix: added prefix `skywalking` .
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 75f6969..52cd487 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -68,12 +68,12 @@
           git clone https://github.com/iresty/test-nginx.git test-nginx
       - name: 'Run Lua Tests'
         run: |
-          cd lib/skywalking
-          lua util_test.lua
-          lua span_test.lua
-          lua tracing_context_test.lua
-          lua segment_ref_test.lua
-          lua correlation_context_test.lua
+          cd lib
+          lua skywalking/util_test.lua
+          lua skywalking/span_test.lua
+          lua skywalking/tracing_context_test.lua
+          lua skywalking/segment_ref_test.lua
+          lua skywalking/correlation_context_test.lua
           cd ..
       - name: 'Run Nginx Lua Tests'
         run: |
diff --git a/README.md b/README.md
index 37dc5f6..a0a8977 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@
 
 ```nginx
 http {
-    lua_package_path "/Path/to/.../skywalking-nginx-lua/lib/skywalking/?.lua;;";
+    lua_package_path "/Path/to/.../skywalking-nginx-lua/lib/?.lua;;";
 
     # Buffer represents the register inform and the queue of the finished segment
     lua_shared_dict tracing_buffer 100m;
@@ -49,9 +49,9 @@
                 --
                 -- Currently, we can not have the upstream real network address
                 ------------------------------------------------------
-                require("tracer"):start("upstream service")
+                require("skywalking.tracer"):start("upstream service")
                 -- If you want correlation custom data to the downstream service
-                -- require("tracer"):start("upstream service", {custom = "custom_value"})
+                -- require("skywalking.tracer"):start("upstream service", {custom = "custom_value"})
             }
 
             -- Target upstream service
@@ -59,12 +59,12 @@
 
             body_filter_by_lua_block {
                 if ngx.arg[2] then
-                    require("tracer"):finish()
+                    require("skywalking.tracer"):finish()
                 end
             }
 
             log_by_lua_block {
-                require("tracer"):prepareForReport()
+                require("skywalking.tracer"):prepareForReport()
             }
         }
     }
diff --git a/examples/nginx.conf b/examples/nginx.conf
index f403f72..7c61b00 100644
--- a/examples/nginx.conf
+++ b/examples/nginx.conf
@@ -25,10 +25,10 @@
     worker_connections 1024;
 }
 http {
-    lua_package_path "/Users/wusheng/Documents/GitHub/skywalking-nginx-lua/lib/skywalking/?.lua;;";
-    # Buffer represents the register inform and the queue of the finished segment 
+    lua_package_path "/Users/wusheng/Documents/GitHub/skywalking-nginx-lua/lib/?.lua;;";
+    # Buffer represents the register inform and the queue of the finished segment
     lua_shared_dict tracing_buffer 100m;
-    
+
     # Init is the timer setter and keeper
     # Setup an infinite loop timer to do register and trace report.
     init_worker_by_lua_block {
@@ -58,21 +58,21 @@
                 --
                 -- Currently, we can not have the upstream real network address
                 ------------------------------------------------------
-                require("tracer"):start("upstream service")
+                require("skywalking.tracer"):start("upstream service")
                 -- If you want correlation custom data to the downstream service
-                -- require("tracer"):start("upstream service", {custom = "custom_value"})
+                -- require("skywalking.tracer"):start("upstream service", {custom = "custom_value"})
             }
 
             proxy_pass http://127.0.0.1:8080/tier2/lb;
 
             body_filter_by_lua_block {
                 if ngx.arg[2] then
-                    require("tracer"):finish()
+                    require("skywalking.tracer"):finish()
                 end
             }
 
             log_by_lua_block {
-                require("tracer"):prepareForReport()
+                require("skywalking.tracer"):prepareForReport()
             }
         }
 
@@ -80,19 +80,19 @@
             default_type text/html;
 
             rewrite_by_lua_block {
-                require("tracer"):start("backend service")
+                require("skywalking.tracer"):start("backend service")
             }
 
             proxy_pass http://127.0.0.1:8080/backend;
 
             body_filter_by_lua_block {
                 if ngx.arg[2] then
-                    require("tracer"):finish()
+                    require("skywalking.tracer"):finish()
                 end
             }
 
             log_by_lua_block {
-                require("tracer"):prepareForReport()
+                require("skywalking.tracer"):prepareForReport()
             }
         }
 
diff --git a/lib/skywalking/resty/http.lua b/lib/resty/http.lua
similarity index 100%
rename from lib/skywalking/resty/http.lua
rename to lib/resty/http.lua
diff --git a/lib/skywalking/resty/http_headers.lua b/lib/resty/http_headers.lua
similarity index 100%
rename from lib/skywalking/resty/http_headers.lua
rename to lib/resty/http_headers.lua
diff --git a/lib/skywalking/resty/jit-uuid.lua b/lib/resty/jit-uuid.lua
similarity index 100%
rename from lib/skywalking/resty/jit-uuid.lua
rename to lib/resty/jit-uuid.lua
diff --git a/lib/skywalking/client.lua b/lib/skywalking/client.lua
index b00a59a..dccc9de 100644
--- a/lib/skywalking/client.lua
+++ b/lib/skywalking/client.lua
@@ -31,7 +31,7 @@
 
     local log = ngx.log
     local DEBUG = ngx.DEBUG
-    local ERR = ngx.ERR    
+    local ERR = ngx.ERR
 
     check = function(premature)
         if not premature then
@@ -71,7 +71,7 @@
     local serviceInstanceName = metadata_buffer:get('serviceInstanceName')
 
     local cjson = require('cjson')
-    local reportInstance = require("management").newReportInstanceProperties(serviceName, serviceInstanceName)
+    local reportInstance = require("skywalking.management").newReportInstanceProperties(serviceName, serviceInstanceName)
     local reportInstanceParam, err = cjson.encode(reportInstance)
     if err then
         log(ERR, "Request to report instance fails, ", err)
@@ -108,7 +108,7 @@
     local serviceInstanceName = metadata_buffer:get('serviceInstanceName')
 
     local cjson = require('cjson')
-    local pingPkg = require("management").newServiceInstancePingPkg(serviceName, serviceInstanceName)
+    local pingPkg = require("skywalking.management").newServiceInstancePingPkg(serviceName, serviceInstanceName)
     local pingPkgParam, err = cjson.encode(pingPkg)
     if err then
         log(ERR, "Agent ping fails, ", err)
diff --git a/lib/skywalking/correlation_context.lua b/lib/skywalking/correlation_context.lua
index fad7bd6..353ad02 100644
--- a/lib/skywalking/correlation_context.lua
+++ b/lib/skywalking/correlation_context.lua
@@ -19,8 +19,8 @@
 local ELEMENT_MAX_NUMBER = 3
 local VALUE_MAX_LENGTH = 128
 
-local Util = require('util')
-local Base64 = require('dependencies/base64')
+local Util = require('skywalking.util')
+local Base64 = require('skywalking.dependencies.base64')
 local encode_base64 = Base64.encode
 local decode_base64 = Base64.decode
 
@@ -118,4 +118,4 @@
     context[key] = value
 end
 
-return _M
\ No newline at end of file
+return _M
diff --git a/lib/skywalking/correlation_context_test.lua b/lib/skywalking/correlation_context_test.lua
index e0dd243..a959f9a 100644
--- a/lib/skywalking/correlation_context_test.lua
+++ b/lib/skywalking/correlation_context_test.lua
@@ -16,8 +16,8 @@
 --
 
 local lu = require('luaunit')
-local correlationContext = require('correlation_context')
-local TC = require('tracing_context')
+local correlationContext = require('skywalking.correlation_context')
+local TC = require('skywalking.tracing_context')
 
 TestCorelationContext = {}
     function TestCorelationContext:testFromSW8Value()
diff --git a/lib/skywalking/segment.lua b/lib/skywalking/segment.lua
index 5127b52..77ccea6 100644
--- a/lib/skywalking/segment.lua
+++ b/lib/skywalking/segment.lua
@@ -17,7 +17,7 @@
 
 -- Segment represents a finished tracing context
 -- Including all information to send to the SkyWalking OAP server.
-local Span = require('span')
+local Span = require('skywalking.span')
 
 local _M = {}
 -- local Segment = {
diff --git a/lib/skywalking/segment_ref.lua b/lib/skywalking/segment_ref.lua
index c680da3..61feea6 100644
--- a/lib/skywalking/segment_ref.lua
+++ b/lib/skywalking/segment_ref.lua
@@ -14,8 +14,8 @@
 -- See the License for the specific language governing permissions and
 -- limitations under the License.
 --
-local Util = require('util')
-local Base64 = require('dependencies/base64')
+local Util = require('skywalking.util')
+local Base64 = require('skywalking.dependencies.base64')
 local encode_base64 = Base64.encode
 local decode_base64 = Base64.decode
 
diff --git a/lib/skywalking/segment_ref_test.lua b/lib/skywalking/segment_ref_test.lua
index 11266cc..308da5e 100644
--- a/lib/skywalking/segment_ref_test.lua
+++ b/lib/skywalking/segment_ref_test.lua
@@ -17,7 +17,7 @@
 
 
 local lu = require('luaunit')
-local SegmentRef = require('segment_ref')
+local SegmentRef = require('skywalking.segment_ref')
 local cjson = require("cjson")
 
 TestSegmentRef = {}
diff --git a/lib/skywalking/span.lua b/lib/skywalking/span.lua
index 64bb758..3882d6c 100644
--- a/lib/skywalking/span.lua
+++ b/lib/skywalking/span.lua
@@ -15,9 +15,9 @@
 -- limitations under the License.
 --
 
-local spanLayer = require("span_layer")
-local Util = require('util')
-local SegmentRef = require("segment_ref")
+local spanLayer = require("skywalking.span_layer")
+local Util = require('skywalking.util')
+local SegmentRef = require("skywalking.segment_ref")
 
 local CONTEXT_CARRIER_KEY = 'sw8'
 
diff --git a/lib/skywalking/span_test.lua b/lib/skywalking/span_test.lua
index 01863d4..c544441 100644
--- a/lib/skywalking/span_test.lua
+++ b/lib/skywalking/span_test.lua
@@ -16,9 +16,9 @@
 --
 
 local lu = require('luaunit')
-local TC = require('tracing_context')
-local Span = require('span')
-local SpanLayer = require("span_layer")
+local TC = require('skywalking.tracing_context')
+local Span = require('skywalking.span')
+local SpanLayer = require("skywalking.span_layer")
 
 TestSpan = {}
     function TestSpan:testNewEntry()
diff --git a/lib/skywalking/tracer.lua b/lib/skywalking/tracer.lua
index b71db28..c8de70a 100644
--- a/lib/skywalking/tracer.lua
+++ b/lib/skywalking/tracer.lua
@@ -14,14 +14,14 @@
 -- See the License for the specific language governing permissions and
 -- limitations under the License.
 --
-local Span = require('span')
+local Span = require('skywalking.span')
 
 local Tracer = {}
 
 function Tracer:start(upstream_name, correlation)
     local metadata_buffer = ngx.shared.tracing_buffer
-    local TC = require('tracing_context')
-    local Layer = require('span_layer')
+    local TC = require('skywalking.tracing_context')
+    local Layer = require('skywalking.span_layer')
 
     local tracingContext
     local serviceName = metadata_buffer:get("serviceName")
@@ -78,8 +78,8 @@
 end
 
 function Tracer:prepareForReport()
-    local TC = require('tracing_context')
-    local Segment = require('segment')
+    local TC = require('skywalking.tracing_context')
+    local Segment = require('skywalking.segment')
     if ngx.ctx.entrySpan ~= nil then
         local ngxstatus = ngx.var.status
         Span.tag(ngx.ctx.entrySpan, 'http.status', ngxstatus)
diff --git a/lib/skywalking/tracing_context.lua b/lib/skywalking/tracing_context.lua
index c9db5c8..3da161a 100644
--- a/lib/skywalking/tracing_context.lua
+++ b/lib/skywalking/tracing_context.lua
@@ -15,9 +15,9 @@
 -- limitations under the License.
 --
 
-local Util = require('util')
-local Span = require('span')
-local CorrelationContext = require('correlation_context')
+local Util = require('skywalking.util')
+local Span = require('skywalking.span')
+local CorrelationContext = require('skywalking.correlation_context')
 
 local CONTEXT_CORRELATION_KEY = 'sw8-correlation'
 
diff --git a/lib/skywalking/tracing_context_test.lua b/lib/skywalking/tracing_context_test.lua
index 3c22a48..7711258 100644
--- a/lib/skywalking/tracing_context_test.lua
+++ b/lib/skywalking/tracing_context_test.lua
@@ -16,9 +16,9 @@
 --
 
 local lu = require('luaunit')
-local TC = require('tracing_context')
-local Segment = require('segment')
-local Span = require('span')
+local TC = require('skywalking.tracing_context')
+local Segment = require('skywalking.segment')
+local Span = require('skywalking.span')
 
 TestTracingContext = {}
     function TestTracingContext:testNew()
diff --git a/lib/skywalking/util.lua b/lib/skywalking/util.lua
index b16ecf2..fe0548c 100644
--- a/lib/skywalking/util.lua
+++ b/lib/skywalking/util.lua
@@ -93,7 +93,8 @@
     end
 else
     newID = function()
-        return timestamp() .. '.' .. math.random(0, MAX_ID_PART2) .. '.' .. math.random(0, MAX_ID_PART3)
+        return timestamp() .. '.' .. math.random(0, MAX_ID_PART2) .. '.'
+               .. math.random(0, MAX_ID_PART3)
     end
 end
 
diff --git a/lib/skywalking/util_test.lua b/lib/skywalking/util_test.lua
index 2089fe9..4201bdc 100644
--- a/lib/skywalking/util_test.lua
+++ b/lib/skywalking/util_test.lua
@@ -16,7 +16,7 @@
 --
 
 local lu = require('luaunit')
-local Util = require('util')
+local Util = require('skywalking.util')
 
 TestUtil = {}
     function TestUtil.testNewID()
diff --git a/t/segment_ref.t b/t/segment_ref.t
index 34b3eab..307b751 100644
--- a/t/segment_ref.t
+++ b/t/segment_ref.t
@@ -10,7 +10,7 @@
 log_level('info');
 
 our $HttpConfig = qq{
-    lua_package_path "$pwd/lib/skywalking/?.lua;;";
+    lua_package_path "$pwd/lib/?.lua;;";
     error_log logs/error.log debug;
     resolver 114.114.114.114 8.8.8.8 ipv6=off;
     lua_shared_dict tracing_buffer 100m;
@@ -25,7 +25,7 @@
 --- config
     location /t {
         content_by_lua_block {
-            local SegmentRef = require('segment_ref')
+            local SegmentRef = require('skywalking.segment_ref')
             local ref = SegmentRef.fromSW8Value('1-My40LjU=-MS4yLjM=-4-c2VydmljZQ==-aW5zdGFuY2U=-L2FwcA==-MTI3LjAuMC4xOjgwODA=')
             ngx.say(ref.trace_id)
             ngx.say(ref.segment_id)
@@ -56,7 +56,7 @@
 --- config
     location /t {
         content_by_lua_block {
-            local SegmentRef = require('segment_ref')
+            local SegmentRef = require('skywalking.segment_ref')
             local ref = SegmentRef.new()
             ref.trace_id = "3.4.5"
             ref.segment_id = "1.2.3"
@@ -82,7 +82,7 @@
 --- config
     location /t {
         content_by_lua_block {
-            local SegmentRef = require('segment_ref')
+            local SegmentRef = require('skywalking.segment_ref')
             local cjson = require("cjson")
 
             local ref = SegmentRef.new()
diff --git a/t/util.t b/t/util.t
index 13208d4..fe80bf2 100644
--- a/t/util.t
+++ b/t/util.t
@@ -10,7 +10,7 @@
 log_level('info');
 
 our $HttpConfig = qq{
-    lua_package_path "$pwd/lib/skywalking/?.lua;;";
+    lua_package_path "$pwd/lib/?.lua;;";
     error_log logs/error.log debug;
     resolver 114.114.114.114 8.8.8.8 ipv6=off;
     lua_shared_dict tracing_buffer 100m;
@@ -25,21 +25,21 @@
 --- config
     location /t {
         content_by_lua_block {
-            local util = require('util')
+            local util = require('skywalking.util')
             local timestamp = util.timestamp()
             local regex = [[^\d+$]]
             local m = ngx.re.match(timestamp, regex)
             if m and tonumber(m[0]) == timestamp then
-                ngx.say(true)
+                ngx.say("done")
             else
-                ngx.say(false)
+                ngx.say("failed to generate timestamp: ", timestamp)
             end
         }
     }
 --- request
 GET /t
 --- response_body
-true
+done
 --- no_error_log
 [error]
 
@@ -50,18 +50,27 @@
 --- config
     location /t {
         content_by_lua_block {
-            local util = require('util')
+            local util = require('skywalking.util')
             local id = util.newID()
             local regex = [[^[0-9a-f]+\-[0-9a-f]+\-[0-9a-f]+\-[0-9a-f]+\-[0-9a-f]+$]]
             local m = ngx.re.match(id, regex)
             if m then
-                ngx.say(true)
+                ngx.say("done")
+                return
+            end
+
+            regex = [[^\d+.\d+.\d+$]]
+            m = ngx.re.match(id, regex)
+            if m then
+                ngx.say("done")
+            else
+                ngx.say("failed to generate id: ", id)
             end
         }
     }
 --- request
 GET /t
 --- response_body
-true
+done
 --- no_error_log
 [error]
diff --git a/test/e2e/e2e-with-mock-collector/docker/conf.d/nginx.conf b/test/e2e/e2e-with-mock-collector/docker/conf.d/nginx.conf
index 16b4427..d7ef21f 100644
--- a/test/e2e/e2e-with-mock-collector/docker/conf.d/nginx.conf
+++ b/test/e2e/e2e-with-mock-collector/docker/conf.d/nginx.conf
@@ -25,7 +25,7 @@
     worker_connections 1024;
 }
 http {
-    lua_package_path "/usr/local/skywalking-nginx-lua/lib/skywalking/?.lua;;";
+    lua_package_path "/usr/local/skywalking-nginx-lua/lib/?.lua;;";
     # Buffer represents the register inform and the queue of the finished segment
     lua_shared_dict tracing_buffer 100m;
 
@@ -38,7 +38,7 @@
         -- Instance means the number of Nginx deployment, does not mean the worker instances
         metadata_buffer:set('serviceInstanceName', 'e2e-test-with-mock-collector-instanceA')
 
-        require("client"):startBackendTimer("http://${collector}:12800")
+        require("skywalking.client"):startBackendTimer("http://${collector}:12800")
     }
 
     server {
@@ -48,17 +48,17 @@
             default_type text/html;
 
             rewrite_by_lua_block {
-                require("tracer"):start("e2e-test-with-mock-collector:upstream_ip:port")
+                require("skywalking.tracer"):start("e2e-test-with-mock-collector:upstream_ip:port")
             }
 
             proxy_pass http://127.0.0.1:8080/tier2/lb;
 
             body_filter_by_lua_block {
-                require("tracer"):finish()
+                require("skywalking.tracer"):finish()
             }
 
             log_by_lua_block {
-                require("tracer"):prepareForReport()
+                require("skywalking.tracer"):prepareForReport()
             }
         }
 
@@ -66,17 +66,17 @@
             default_type text/html;
 
             rewrite_by_lua_block {
-                require("tracer"):start("e2e-test-with-mock-collector:upstream_ip2:port2")
+                require("skywalking.tracer"):start("e2e-test-with-mock-collector:upstream_ip2:port2")
             }
 
             proxy_pass http://127.0.0.1:8080/backend;
 
             body_filter_by_lua_block {
-                require("tracer"):finish()
+                require("skywalking.tracer"):finish()
             }
 
             log_by_lua_block {
-                require("tracer"):prepareForReport()
+                require("skywalking.tracer"):prepareForReport()
             }
         }