diff --git a/filter/filter_impl/tracing_filter.go b/filter/filter_impl/tracing_filter.go index 3289002e06c2695ce065e534afc7f8d09ba27186..fc0a2918190634baaf3643c9edb0bc9e50c71874 100644 --- a/filter/filter_impl/tracing_filter.go +++ b/filter/filter_impl/tracing_filter.go @@ -35,7 +35,7 @@ const ( // this should be executed before users set their own Tracer func init() { - extension.SetFilter(tracingFilterName, NewTracingFilter) + extension.SetFilter(tracingFilterName, newTracingFilter) opentracing.SetGlobalTracer(opentracing.NoopTracer{}) } @@ -44,10 +44,10 @@ var ( successKey = "Success" ) -type TracingFilter struct { +type tracingFilter struct { } -func (tf *TracingFilter) Invoke(invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { +func (tf *tracingFilter) Invoke(invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { operationName := invoker.GetUrl().ServiceKey() + invocation.MethodName() // withTimeout after we support the timeout between different ends. @@ -67,17 +67,17 @@ func (tf *TracingFilter) Invoke(invoker protocol.Invoker, invocation protocol.In return result } -func (tf *TracingFilter) OnResponse(result protocol.Result, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { - panic("implement me") +func (tf *tracingFilter) OnResponse(result protocol.Result, invoker protocol.Invoker, invocation protocol.Invocation) protocol.Result { + return result } var ( - tracingFilterInstance *TracingFilter + tracingFilterInstance *tracingFilter ) -func NewTracingFilter() filter.Filter { +func newTracingFilter() filter.Filter { if tracingFilterInstance == nil { - tracingFilterInstance = &TracingFilter{} + tracingFilterInstance = &tracingFilter{} } return tracingFilterInstance } diff --git a/filter/filter_impl/tracing_filter_test.go b/filter/filter_impl/tracing_filter_test.go new file mode 100644 index 0000000000000000000000000000000000000000..9188722121e5fd76e311e61181d8b4324f517696 --- /dev/null +++ b/filter/filter_impl/tracing_filter_test.go @@ -0,0 +1,43 @@ +/* + * 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. + */ + +package filter_impl + +import ( + "context" + "testing" + + "github.com/apache/dubbo-go/common" + "github.com/apache/dubbo-go/protocol" + "github.com/apache/dubbo-go/protocol/invocation" +) + +func TestTracingFilter_Invoke(t *testing.T) { + url, _ := common.NewURL(context.Background(), + "dubbo://:20000/UserProvider?app.version=0.0.1&application=BDTService&bean.name=UserProvider"+ + "&cluster=failover&environment=dev&group=&interface=com.ikurento.user.UserProvider&loadbalance=random&methods.GetUser."+ + "loadbalance=random&methods.GetUser.retries=1&methods.GetUser.weight=0&module=dubbogo+user-info+server&name="+ + "BDTService&organization=ikurento.com&owner=ZX®istry.role=3&retries=&"+ + "service.filter=echo%2Ctoken%2Caccesslog×tamp=1569153406&token=934804bf-b007-4174-94eb-96e3e1d60cc7&version=&warmup=100") + invoker := protocol.NewBaseInvoker(url) + + attach := make(map[string]string, 10) + inv := invocation.NewRPCInvocation("MethodName", []interface{}{"OK", "Hello"}, attach) + + tf := newTracingFilter() + tf.Invoke(invoker, inv) +}