1. non-simplify mode:
```
dubbo://120.0.0.1:20880/org.apache.dubbo.demo.DemoService?key=value
```
the store path of ZK will be: `/dubbo/porg.apache.dubbo.demo.DemoService/url`

2. simplify mode:
```
dubbo://120.0.0.1:20880/org.apache.dubbo.demo.DemoService?key=value
```
the store path of ZK will be: `/dubbo/porg.apache.dubbo.demo.DemoService/url`

3. simplify mode with path specified:
```
dubbo://120.0.0.1:20880/path-value?key=value
```
the store path of ZK will be: `/dubbo/path-value/url`
ProviderModel providerModel = new ProviderModel(exportUrl.getServiceKey(), server, DemoService.class);
        ApplicationModel.initProviderModel(exportUrl.getServiceKey(), providerModel);
        
        URL nettyUrl = exportUrl.addParameter(Constants.SERVER_KEY, "netty")
                .addParameter(Constants.EXTENSION_KEY, "org.apache.dubbo.rpc.protocol.rest.RpcContextFilter");
        Exporter<DemoService> exporter = protocol.export(proxy.getInvoker(server, DemoService.class, nettyUrl));
        DemoService demoService = this.proxy.getProxy(protocol.refer(DemoService.class, nettyUrl));
        String value = null;
        
        RpcContext.getContext().setAttachment("key", value);
        Integer result = demoService.hello(1, 2);
        assertThat(result, is(3));
        exporter.unexport();
    }
    @Test
    public void testRegFail() {
        Assertions.assertThrows(RuntimeException.class, () -> {
            DemoService server = new DemoServiceImpl();
            ProviderModel providerModel = new ProviderModel(exportUrl.getServiceKey(), server, DemoService.class);
            ApplicationModel.initProviderModel(exportUrl.getServiceKey(), providerModel);
            URL nettyUrl = exportUrl.addParameter(Constants.EXTENSION_KEY, "com.not.existing.Filter");
            protocol.export(proxy.getInvoker(server, DemoService.class, nettyUrl));
        });
    }
    @Test
    public void testDefaultPort() {
        assertThat(protocol.getDefaultPort(), is(80));
    }
}