Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
dd621886
Commit
dd621886
authored
Dec 08, 2016
by
Hans Leidekker
Committed by
Alexandre Julliard
Dec 08, 2016
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
rpcrt4/tests: Merge rpc_protseq.c into rpc.c.
Signed-off-by:
Hans Leidekker
<
hans@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
369543e3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
159 additions
and
206 deletions
+159
-206
Makefile.in
dlls/rpcrt4/tests/Makefile.in
+0
-1
rpc.c
dlls/rpcrt4/tests/rpc.c
+159
-0
rpc_protseq.c
dlls/rpcrt4/tests/rpc_protseq.c
+0
-205
No files found.
dlls/rpcrt4/tests/Makefile.in
View file @
dd621886
...
...
@@ -8,7 +8,6 @@ C_SRCS = \
ndr_marshall.c
\
rpc.c
\
rpc_async.c
\
rpc_protseq.c
\
server.c
IDL_SRCS
=
server.idl
dlls/rpcrt4/tests/rpc.c
View file @
dd621886
...
...
@@ -2,6 +2,7 @@
* Unit test suite for rpc functions
*
* Copyright 2002 Greg Turner
* Copyright 2008-2009 Robert Shearman
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
...
...
@@ -909,8 +910,163 @@ static void test_RpcServerRegisterAuthInfo(void)
ok
(
status
==
RPC_S_UNKNOWN_AUTHN_SERVICE
,
"status = %x
\n
"
,
status
);
}
static
void
test_RpcServerUseProtseq
(
void
)
{
RPC_STATUS
status
;
RPC_BINDING_VECTOR
*
bindings
;
ULONG
i
;
ULONG
binding_count_before
;
ULONG
binding_count_after1
;
ULONG
binding_count_after2
;
ULONG
endpoints_registered
=
0
;
static
unsigned
char
iptcp
[]
=
"ncacn_ip_tcp"
;
static
unsigned
char
np
[]
=
"ncacn_np"
;
static
unsigned
char
ncalrpc
[]
=
"ncalrpc"
;
BOOL
iptcp_registered
=
FALSE
,
np_registered
=
FALSE
,
ncalrpc_registered
=
FALSE
;
status
=
RpcServerInqBindings
(
&
bindings
);
if
(
status
==
RPC_S_NO_BINDINGS
)
binding_count_before
=
0
;
else
{
binding_count_before
=
bindings
->
Count
;
ok
(
status
==
RPC_S_OK
,
"RpcServerInqBindings failed with status %d
\n
"
,
status
);
for
(
i
=
0
;
i
<
bindings
->
Count
;
i
++
)
{
RPC_CSTR
str_bind
;
status
=
RpcBindingToStringBindingA
(
bindings
->
BindingH
[
i
],
&
str_bind
);
ok
(
status
==
RPC_S_OK
,
"RpcBindingToStringBinding failed with status %d
\n
"
,
status
);
if
(
lstrlenA
((
const
char
*
)
str_bind
)
>
12
&&
!
memcmp
(
str_bind
,
"ncacn_ip_tcp"
,
12
))
iptcp_registered
=
TRUE
;
if
(
lstrlenA
((
const
char
*
)
str_bind
)
>
8
&&
!
memcmp
(
str_bind
,
"ncacn_np"
,
8
))
np_registered
=
TRUE
;
if
(
lstrlenA
((
const
char
*
)
str_bind
)
>
7
&&
!
memcmp
(
str_bind
,
"ncalrpc"
,
7
))
ncalrpc_registered
=
TRUE
;
RpcStringFreeA
(
&
str_bind
);
}
RpcBindingVectorFree
(
&
bindings
);
}
/* show that RpcServerUseProtseqEp(..., NULL, ...) is the same as
* RpcServerUseProtseq(...) */
status
=
RpcServerUseProtseqEpA
(
ncalrpc
,
0
,
NULL
,
NULL
);
ok
(
status
==
RPC_S_OK
||
broken
(
status
==
RPC_S_INVALID_ENDPOINT_FORMAT
),
"RpcServerUseProtseqEp with NULL endpoint failed with status %d
\n
"
,
status
);
/* register protocol sequences without explicit endpoints */
status
=
RpcServerUseProtseqA
(
np
,
0
,
NULL
);
if
(
status
==
RPC_S_PROTSEQ_NOT_SUPPORTED
)
win_skip
(
"ncacn_np not supported
\n
"
);
else
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_np) failed with status %d
\n
"
,
status
);
if
(
status
==
RPC_S_OK
&&
!
np_registered
)
endpoints_registered
++
;
status
=
RpcServerUseProtseqA
(
iptcp
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_ip_tcp) failed with status %d
\n
"
,
status
);
if
(
status
==
RPC_S_OK
&&
!
iptcp_registered
)
endpoints_registered
++
;
status
=
RpcServerUseProtseqA
(
ncalrpc
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseqEp(ncalrpc) failed with status %d
\n
"
,
status
);
if
(
status
==
RPC_S_OK
&&
!
ncalrpc_registered
)
endpoints_registered
++
;
status
=
RpcServerInqBindings
(
&
bindings
);
ok
(
status
==
RPC_S_OK
,
"RpcServerInqBindings failed with status %d
\n
"
,
status
);
binding_count_after1
=
bindings
->
Count
;
ok
(
binding_count_after1
==
binding_count_before
+
endpoints_registered
,
"wrong binding count - before: %u, after %u, endpoints registered %u
\n
"
,
binding_count_before
,
binding_count_after1
,
endpoints_registered
);
for
(
i
=
0
;
i
<
bindings
->
Count
;
i
++
)
{
RPC_CSTR
str_bind
;
status
=
RpcBindingToStringBindingA
(
bindings
->
BindingH
[
i
],
&
str_bind
);
ok
(
status
==
RPC_S_OK
,
"RpcBindingToStringBinding failed with status %d
\n
"
,
status
);
trace
(
"string binding: %s
\n
"
,
str_bind
);
RpcStringFreeA
(
&
str_bind
);
}
RpcBindingVectorFree
(
&
bindings
);
/* re-register - endpoints should be reused */
status
=
RpcServerUseProtseqA
(
np
,
0
,
NULL
);
if
(
status
==
RPC_S_PROTSEQ_NOT_SUPPORTED
)
win_skip
(
"ncacn_np not supported
\n
"
);
else
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_np) failed with status %d
\n
"
,
status
);
status
=
RpcServerUseProtseqA
(
iptcp
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_ip_tcp) failed with status %d
\n
"
,
status
);
status
=
RpcServerUseProtseqA
(
ncalrpc
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseqEp(ncalrpc) failed with status %d
\n
"
,
status
);
status
=
RpcServerInqBindings
(
&
bindings
);
ok
(
status
==
RPC_S_OK
,
"RpcServerInqBindings failed with status %d
\n
"
,
status
);
binding_count_after2
=
bindings
->
Count
;
ok
(
binding_count_after2
==
binding_count_after1
,
"bindings should have been re-used - after1: %u after2: %u
\n
"
,
binding_count_after1
,
binding_count_after2
);
RpcBindingVectorFree
(
&
bindings
);
}
static
void
test_endpoint_mapper
(
RPC_CSTR
protseq
,
RPC_CSTR
address
)
{
static
unsigned
char
annotation
[]
=
"Test annotation string."
;
RPC_STATUS
status
;
RPC_BINDING_VECTOR
*
binding_vector
;
handle_t
handle
;
unsigned
char
*
binding
;
status
=
RpcServerRegisterIf
(
IFoo_v0_0_s_ifspec
,
NULL
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcServerRegisterIf failed (%u)
\n
"
,
protseq
,
status
);
status
=
RpcServerInqBindings
(
&
binding_vector
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcServerInqBindings failed with error %u
\n
"
,
protseq
,
status
);
/* register endpoints created in test_RpcServerUseProtseq */
status
=
RpcEpRegisterA
(
IFoo_v0_0_s_ifspec
,
binding_vector
,
NULL
,
annotation
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcEpRegisterA failed with error %u
\n
"
,
protseq
,
status
);
/* reregister the same endpoint with no annotation */
status
=
RpcEpRegisterA
(
IFoo_v0_0_s_ifspec
,
binding_vector
,
NULL
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcEpRegisterA failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcStringBindingComposeA
(
NULL
,
protseq
,
address
,
NULL
,
NULL
,
&
binding
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcStringBindingCompose failed (%u)
\n
"
,
protseq
,
status
);
status
=
RpcBindingFromStringBindingA
(
binding
,
&
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingFromStringBinding failed (%u)
\n
"
,
protseq
,
status
);
RpcStringFreeA
(
&
binding
);
status
=
RpcBindingReset
(
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingReset failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcEpResolveBinding
(
handle
,
IFoo_v0_0_s_ifspec
);
ok
(
status
==
RPC_S_OK
||
broken
(
status
==
RPC_S_SERVER_UNAVAILABLE
),
/* win9x */
"%s: RpcEpResolveBinding failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcBindingReset
(
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingReset failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcBindingFree
(
&
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingFree failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcServerUnregisterIf
(
NULL
,
NULL
,
FALSE
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcServerUnregisterIf failed (%u)
\n
"
,
protseq
,
status
);
status
=
RpcEpUnregister
(
IFoo_v0_0_s_ifspec
,
binding_vector
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcEpUnregisterA failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcBindingVectorFree
(
&
binding_vector
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingVectorFree failed with error %u
\n
"
,
protseq
,
status
);
}
START_TEST
(
rpc
)
{
static
unsigned
char
ncacn_np
[]
=
"ncacn_np"
;
static
unsigned
char
ncalrpc
[]
=
"ncalrpc"
;
static
unsigned
char
np_address
[]
=
"."
;
UuidConversionAndComparison
();
TestDceErrorInqText
();
test_rpc_ncacn_ip_tcp
();
...
...
@@ -924,4 +1080,7 @@ START_TEST( rpc )
test_RpcBindingFree
();
test_RpcServerInqDefaultPrincName
();
test_RpcServerRegisterAuthInfo
();
test_RpcServerUseProtseq
();
test_endpoint_mapper
(
ncacn_np
,
np_address
);
test_endpoint_mapper
(
ncalrpc
,
NULL
);
}
dlls/rpcrt4/tests/rpc_protseq.c
deleted
100644 → 0
View file @
369543e3
/*
* RPC Protocol Sequence Server Tests
*
* Copyright 2008-2009 Robert Shearman
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include <stdarg.h>
#include <stdio.h>
#include "wine/test.h"
#include <windef.h>
#include <winbase.h>
#include <winnt.h>
#include <winerror.h>
#include "rpc.h"
#include "rpcdce.h"
static
void
test_RpcServerUseProtseq
(
void
)
{
RPC_STATUS
status
;
RPC_BINDING_VECTOR
*
bindings
;
ULONG
i
;
ULONG
binding_count_before
;
ULONG
binding_count_after1
;
ULONG
binding_count_after2
;
ULONG
endpoints_registered
=
0
;
static
unsigned
char
iptcp
[]
=
"ncacn_ip_tcp"
;
static
unsigned
char
np
[]
=
"ncacn_np"
;
static
unsigned
char
ncalrpc
[]
=
"ncalrpc"
;
status
=
RpcServerInqBindings
(
&
bindings
);
if
(
status
==
RPC_S_NO_BINDINGS
)
binding_count_before
=
0
;
else
{
binding_count_before
=
bindings
->
Count
;
ok
(
status
==
RPC_S_OK
,
"RpcServerInqBindings failed with status %d
\n
"
,
status
);
RpcBindingVectorFree
(
&
bindings
);
}
/* show that RpcServerUseProtseqEp(..., NULL, ...) is the same as
* RpcServerUseProtseq(...) */
status
=
RpcServerUseProtseqEpA
(
ncalrpc
,
0
,
NULL
,
NULL
);
ok
(
status
==
RPC_S_OK
||
broken
(
status
==
RPC_S_INVALID_ENDPOINT_FORMAT
),
"RpcServerUseProtseqEp with NULL endpoint failed with status %d
\n
"
,
status
);
/* register protocol sequences without explicit endpoints */
status
=
RpcServerUseProtseqA
(
np
,
0
,
NULL
);
if
(
status
==
RPC_S_PROTSEQ_NOT_SUPPORTED
)
win_skip
(
"ncacn_np not supported
\n
"
);
else
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_np) failed with status %d
\n
"
,
status
);
if
(
status
==
RPC_S_OK
)
endpoints_registered
++
;
status
=
RpcServerUseProtseqA
(
iptcp
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_ip_tcp) failed with status %d
\n
"
,
status
);
if
(
status
==
RPC_S_OK
)
endpoints_registered
++
;
status
=
RpcServerUseProtseqA
(
ncalrpc
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseqEp(ncalrpc) failed with status %d
\n
"
,
status
);
if
(
status
==
RPC_S_OK
)
endpoints_registered
++
;
status
=
RpcServerInqBindings
(
&
bindings
);
ok
(
status
==
RPC_S_OK
,
"RpcServerInqBindings failed with status %d
\n
"
,
status
);
binding_count_after1
=
bindings
->
Count
;
ok
(
binding_count_after1
==
binding_count_before
+
endpoints_registered
,
"wrong binding count - before: %u, after %u, endpoints registered %u
\n
"
,
binding_count_before
,
binding_count_after1
,
endpoints_registered
);
for
(
i
=
0
;
i
<
bindings
->
Count
;
i
++
)
{
RPC_CSTR
str_bind
;
status
=
RpcBindingToStringBindingA
(
bindings
->
BindingH
[
i
],
&
str_bind
);
ok
(
status
==
RPC_S_OK
,
"RpcBindingToStringBinding failed with status %d
\n
"
,
status
);
trace
(
"string binding: %s
\n
"
,
str_bind
);
RpcStringFreeA
(
&
str_bind
);
}
RpcBindingVectorFree
(
&
bindings
);
/* re-register - endpoints should be reused */
status
=
RpcServerUseProtseqA
(
np
,
0
,
NULL
);
if
(
status
==
RPC_S_PROTSEQ_NOT_SUPPORTED
)
win_skip
(
"ncacn_np not supported
\n
"
);
else
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_np) failed with status %d
\n
"
,
status
);
status
=
RpcServerUseProtseqA
(
iptcp
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseq(ncacn_ip_tcp) failed with status %d
\n
"
,
status
);
status
=
RpcServerUseProtseqA
(
ncalrpc
,
0
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"RpcServerUseProtseqEp(ncalrpc) failed with status %d
\n
"
,
status
);
status
=
RpcServerInqBindings
(
&
bindings
);
ok
(
status
==
RPC_S_OK
,
"RpcServerInqBindings failed with status %d
\n
"
,
status
);
binding_count_after2
=
bindings
->
Count
;
ok
(
binding_count_after2
==
binding_count_after1
,
"bindings should have been re-used - after1: %u after2: %u
\n
"
,
binding_count_after1
,
binding_count_after2
);
RpcBindingVectorFree
(
&
bindings
);
}
static
RPC_DISPATCH_FUNCTION
IFoo_table
[]
=
{
0
};
static
RPC_DISPATCH_TABLE
IFoo_v0_0_DispatchTable
=
{
0
,
IFoo_table
};
static
const
RPC_SERVER_INTERFACE
IFoo___RpcServerInterface
=
{
sizeof
(
RPC_SERVER_INTERFACE
),
{{
0x00000000
,
0x0000
,
0x0000
,{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x12
,
0x34
}},{
0
,
0
}},
{{
0x8a885d04
,
0x1ceb
,
0x11c9
,{
0x9f
,
0xe8
,
0x08
,
0x00
,
0x2b
,
0x10
,
0x48
,
0x60
}},{
2
,
0
}},
&
IFoo_v0_0_DispatchTable
,
0
,
0
,
0
,
0
,
0
,
};
static
RPC_IF_HANDLE
IFoo_v0_0_s_ifspec
=
(
RPC_IF_HANDLE
)
&
IFoo___RpcServerInterface
;
static
void
test_endpoint_mapper
(
RPC_CSTR
protseq
,
RPC_CSTR
address
)
{
static
unsigned
char
annotation
[]
=
"Test annotation string."
;
RPC_STATUS
status
;
RPC_BINDING_VECTOR
*
binding_vector
;
handle_t
handle
;
unsigned
char
*
binding
;
status
=
RpcServerRegisterIf
(
IFoo_v0_0_s_ifspec
,
NULL
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcServerRegisterIf failed (%u)
\n
"
,
protseq
,
status
);
status
=
RpcServerInqBindings
(
&
binding_vector
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcServerInqBindings failed with error %u
\n
"
,
protseq
,
status
);
/* register endpoints created in test_RpcServerUseProtseq */
status
=
RpcEpRegisterA
(
IFoo_v0_0_s_ifspec
,
binding_vector
,
NULL
,
annotation
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcEpRegisterA failed with error %u
\n
"
,
protseq
,
status
);
/* reregister the same endpoint with no annotation */
status
=
RpcEpRegisterA
(
IFoo_v0_0_s_ifspec
,
binding_vector
,
NULL
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcEpRegisterA failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcStringBindingComposeA
(
NULL
,
protseq
,
address
,
NULL
,
NULL
,
&
binding
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcStringBindingCompose failed (%u)
\n
"
,
protseq
,
status
);
status
=
RpcBindingFromStringBindingA
(
binding
,
&
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingFromStringBinding failed (%u)
\n
"
,
protseq
,
status
);
RpcStringFreeA
(
&
binding
);
status
=
RpcBindingReset
(
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingReset failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcEpResolveBinding
(
handle
,
IFoo_v0_0_s_ifspec
);
ok
(
status
==
RPC_S_OK
||
broken
(
status
==
RPC_S_SERVER_UNAVAILABLE
),
/* win9x */
"%s: RpcEpResolveBinding failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcBindingReset
(
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingReset failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcBindingFree
(
&
handle
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingFree failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcServerUnregisterIf
(
NULL
,
NULL
,
FALSE
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcServerUnregisterIf failed (%u)
\n
"
,
protseq
,
status
);
status
=
RpcEpUnregister
(
IFoo_v0_0_s_ifspec
,
binding_vector
,
NULL
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcEpUnregisterA failed with error %u
\n
"
,
protseq
,
status
);
status
=
RpcBindingVectorFree
(
&
binding_vector
);
ok
(
status
==
RPC_S_OK
,
"%s: RpcBindingVectorFree failed with error %u
\n
"
,
protseq
,
status
);
}
START_TEST
(
rpc_protseq
)
{
static
unsigned
char
ncacn_np
[]
=
"ncacn_np"
;
static
unsigned
char
ncalrpc
[]
=
"ncalrpc"
;
static
unsigned
char
np_address
[]
=
"."
;
test_RpcServerUseProtseq
();
test_endpoint_mapper
(
ncacn_np
,
np_address
);
test_endpoint_mapper
(
ncalrpc
,
NULL
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment