r12608: Remove some unused #include lines.
[jelmer/samba4-debian.git] / source / torture / rpc / remact.c
index 1136f680252009289644fcb7565e9225e0c26564..1d1eeae53e0f5dda231f63ececbaa13a646e0b6b 100644 (file)
 */
 
 #include "includes.h"
+#include "librpc/gen_ndr/ndr_remact.h"
+#include "librpc/gen_ndr/ndr_epmapper.h"
 
-#define CLSID_TEST "00000316-0000-0000-C000-000000000046"
-#define CLSID_SIMPLE "5e9ddec7-5767-11cf-beab-00aa006c3606"
-#define CLSID_COFFEEMACHINE "DB7C21F8-FE33-4C11-AEA5-CEB56F076FBB"
+#define CLSID_IMAGEDOC "02B01C80-E03D-101A-B294-00DD010F2BF9"
 
 static int test_RemoteActivation(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 {
        struct RemoteActivation r;
        NTSTATUS status;
-       struct GUID iids[2];
-       uint16 protseq[2] = { EPM_PROTOCOL_TCP, EPM_PROTOCOL_NCALRPC };
+       struct GUID iids[1];
+       uint16_t protseq[3] = { EPM_PROTOCOL_TCP, EPM_PROTOCOL_NCALRPC, EPM_PROTOCOL_UUID };
 
        ZERO_STRUCT(r.in);
        r.in.this.version.MajorVersion = 5;
        r.in.this.version.MinorVersion = 1;
-       uuid_generate_random(&r.in.this.cid);
-       GUID_from_string(CLSID_SIMPLE, &r.in.Clsid);
+       r.in.this.cid = GUID_random();
+       GUID_from_string(CLSID_IMAGEDOC, &r.in.Clsid);
        r.in.ClientImpLevel = RPC_C_IMP_LEVEL_IDENTIFY;
-       r.in.num_protseqs = 2;
+       r.in.num_protseqs = 3;
        r.in.protseq = protseq;
        r.in.Interfaces = 1;
        GUID_from_string(DCERPC_IUNKNOWN_UUID, &iids[0]);
@@ -46,17 +46,47 @@ static int test_RemoteActivation(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 
        status = dcerpc_RemoteActivation(p, mem_ctx, &r);
        if(NT_STATUS_IS_ERR(status)) {
-               fprintf(stderr, "RemoteActivation: %s\n", nt_errstr(status));
+               printf("RemoteActivation: %s\n", nt_errstr(status));
                return 0;
        }
 
        if(!W_ERROR_IS_OK(r.out.result)) {
-               fprintf(stderr, "RemoteActivation: %s\n", win_errstr(r.out.result));
+               printf("RemoteActivation: %s\n", win_errstr(r.out.result));
                return 0;
        }
 
-       if(!W_ERROR_IS_OK(W_ERROR(r.out.hr))) {
-               fprintf(stderr, "RemoteActivation: %s\n", win_errstr(W_ERROR(r.out.hr)));
+       if(!W_ERROR_IS_OK(r.out.hr)) {
+               printf("RemoteActivation: %s\n", win_errstr(r.out.hr));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.results[0])) {
+               printf("RemoteActivation: %s\n", win_errstr(r.out.results[0]));
+               return 0;
+       }
+
+       GUID_from_string(DCERPC_ICLASSFACTORY_UUID, &iids[0]);
+       r.in.Interfaces = 1;
+       r.in.Mode = MODE_GET_CLASS_OBJECT;
+
+       status = dcerpc_RemoteActivation(p, mem_ctx, &r);
+       if(NT_STATUS_IS_ERR(status)) {
+               printf("RemoteActivation(GetClassObject): %s\n", nt_errstr(status));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.result)) {
+               printf("RemoteActivation(GetClassObject): %s\n", win_errstr(r.out.result));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.hr)) {
+               printf("RemoteActivation(GetClassObject): %s\n", win_errstr(r.out.hr));
+               return 0;
+       }
+
+       if(!W_ERROR_IS_OK(r.out.results[0])) {
+               printf("RemoteActivation(GetClassObject): %s\n", win_errstr(r.out.results[0]));
                return 0;
        }
 
@@ -65,28 +95,26 @@ static int test_RemoteActivation(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx)
 
 BOOL torture_rpc_remact(void)
 {
-     NTSTATUS status;
-     struct dcerpc_pipe *p;
+       NTSTATUS status;
+       struct dcerpc_pipe *p;
        TALLOC_CTX *mem_ctx;
        BOOL ret = True;
 
        mem_ctx = talloc_init("torture_rpc_remact");
 
-       status = torture_rpc_connection(&p, 
-                                       DCERPC_IREMOTEACTIVATION_NAME,
-                                       DCERPC_IREMOTEACTIVATION_UUID, 
-                                       DCERPC_IREMOTEACTIVATION_VERSION);
+       status = torture_rpc_connection(mem_ctx,
+                                       &p, 
+                                       &dcerpc_table_IRemoteActivation);
 
        if (!NT_STATUS_IS_OK(status)) {
+               talloc_free(mem_ctx);
                return False;
        }
 
        if(!test_RemoteActivation(p, mem_ctx))
                ret = False;
 
-       talloc_destroy(mem_ctx);
-
-    torture_rpc_close(p);
+       talloc_free(mem_ctx);
 
        return ret;
 }