Project

General

Profile

« Previous | Next » 

Revision 10044

Added by Jing Tao over 7 years ago

Add code to testArchive, testSetAccessPolicy, testSetOwner and testSetReplicationPolicy on objects whose authoritative member node is v1 or v2 MNRead.

View differences:

CNodeServiceTest.java
322 322
	    printTestHeader("testSetOwner");
323 323

  
324 324
	    try {
325
            //v2 mn should fail
325 326
            Session session = getCNSession();
327
            Identifier guid = new Identifier();
328
            guid.setValue("testSetOwner." + System.currentTimeMillis());
329
            InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
330
            SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
331
            NodeReference nr = new NodeReference();
332
            nr.setValue(MockCNode.V1MNNODEID);
333
            sysmeta.setOriginMemberNode(nr);
334
            sysmeta.setAuthoritativeMemberNode(nr);
335
            long serialVersion = 1L;
336
            // save it
337
            Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
338
            assertEquals(guid.getValue(), retGuid.getValue());
339
            Subject rightsHolder = new Subject();
340
            rightsHolder.setValue("newUser");
341
            // set it
342
            Identifier retPid = CNodeService.getInstance(request).setRightsHolder(session, guid, rightsHolder, serialVersion);
343
            assertEquals(guid, retPid);
344
            // get it
345
            sysmeta = CNodeService.getInstance(request).getSystemMetadata(session, guid);
346
            assertNotNull(sysmeta);
347
            // check it
348
            assertTrue(rightsHolder.equals(sysmeta.getRightsHolder()));
349
            
350
        } catch(Exception e) {
351
            e.printStackTrace();
352
            fail("Unexpected error: " + e.getMessage());
353
        }
354
	    try {
355
	        //v2 mn should fail
356
            Session session = getCNSession();
326 357
			Identifier guid = new Identifier();
327 358
			guid.setValue("testSetOwner." + System.currentTimeMillis());
328 359
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
329 360
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
361
			NodeReference nr = new NodeReference();
362
            nr.setValue(MockCNode.V2MNNODEID);
363
            sysmeta.setOriginMemberNode(nr);
364
            sysmeta.setAuthoritativeMemberNode(nr);
330 365
			long serialVersion = 1L;
331 366
			// save it
332 367
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
......
344 379
			
345 380
        } catch(Exception e) {
346 381
            e.printStackTrace();
347
            if(e instanceof ServiceFailure) {
348
                assertTrue(e.getMessage().contains("Couldn't determine the authoritative member node"));
382
            if(e instanceof NotAuthorized) {
383
                assertTrue(e.getMessage().contains("The Coordinating Node is not authorized to make systemMetadata changes"));
349 384
            } else {
350 385
                fail("Unexpected error: " + e.getMessage());
351 386
            }
......
354 389
	
355 390
	public void testSetAccessPolicy() {
356 391
	    printTestHeader("testSetAccessPolicy");
392
	    
393
	    
394
	    try {
395
            // trys to set access policy on an object whose authortiative memeber node is MNRead v2. It should fail.
396
            Session session = getCNSession();
397
            Identifier guid = new Identifier();
398
            guid.setValue("testSetAccessPolicy." + System.currentTimeMillis());
399
            InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
400
            SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
401
            NodeReference nr = new NodeReference();
402
            nr.setValue(MockCNode.V1MNNODEID);
403
            sysmeta.setOriginMemberNode(nr);
404
            sysmeta.setAuthoritativeMemberNode(nr);
405
            
406
            long serialVersion = 1L;
357 407

  
408
            // save it
409
            Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
410
            assertEquals(guid.getValue(), retGuid.getValue());
411
            AccessPolicy accessPolicy = new AccessPolicy();
412
            AccessRule accessRule = new AccessRule();
413
            accessRule.addPermission(Permission.WRITE);
414
            Subject publicSubject = new Subject();
415
            publicSubject.setValue(Constants.SUBJECT_PUBLIC);
416
            accessRule.addSubject(publicSubject);
417
            accessPolicy.addAllow(accessRule);
418
            // set it
419
            boolean result = CNodeService.getInstance(request).setAccessPolicy(session, guid, accessPolicy, serialVersion );
420
            assertTrue(result);
421
            // check it
422
            result = CNodeService.getInstance(request).isAuthorized(session, guid, Permission.WRITE);
423
            assertTrue(result);
424
        } catch(Exception e) {
425
            
426
            fail("Unexpected error: " + e.getMessage());
427

  
428
        }
429

  
358 430
	    try {
431
	        // trys to set access policy on an object whose authortiative memeber node is MNRead v2. It should fail.
359 432
            Session session = getCNSession();
360 433
			Identifier guid = new Identifier();
361 434
			guid.setValue("testSetAccessPolicy." + System.currentTimeMillis());
362 435
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
363 436
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
364
	    long serialVersion = 1L;
437
			NodeReference nr = new NodeReference();
438
	        nr.setValue(MockCNode.V2MNNODEID);
439
	        sysmeta.setOriginMemberNode(nr);
440
			sysmeta.setAuthoritativeMemberNode(nr);
441
			
442
	        long serialVersion = 1L;
365 443

  
366 444
			// save it
367 445
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
......
381 459
			assertTrue(result);
382 460
        } catch(Exception e) {
383 461
            e.printStackTrace();
384
            if(e instanceof ServiceFailure) {
385
                assertTrue(e.getMessage().contains("Couldn't determine the authoritative member node"));
462
            if(e instanceof NotAuthorized) {
463
                assertTrue(e.getMessage().contains("The Coordinating Node is not authorized to make systemMetadata changes"));
386 464
            } else {
387 465
                fail("Unexpected error: " + e.getMessage());
388 466
            }
......
426 504
	    printTestHeader("testReplicationPolicy");
427 505

  
428 506
	    try {
507
            //v2 mn should fail
429 508
            Session session = getCNSession();
509
            Identifier guid = new Identifier();
510
            guid.setValue("testReplicationPolicy." + System.currentTimeMillis());
511
            InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
512
            SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
513
            NodeReference nr = new NodeReference();
514
            nr.setValue(MockCNode.V1MNNODEID);
515
            sysmeta.setOriginMemberNode(nr);
516
            sysmeta.setAuthoritativeMemberNode(nr);
517
            long serialVersion = 1L;
518

  
519
            // save it
520
            Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
521
            assertEquals(guid.getValue(), retGuid.getValue());
522
            
523
            ReplicationPolicy policy = new ReplicationPolicy();
524
            NodeReference node = new NodeReference();
525
            node.setValue("testNode");
526
            policy.addPreferredMemberNode(node );
527
            // set it
528
            boolean result = CNodeService.getInstance(request).setReplicationPolicy(session, guid, policy, serialVersion);
529
            assertTrue(result);
530
            // get it
531
            sysmeta = CNodeService.getInstance(request).getSystemMetadata(session, guid);
532
            assertNotNull(sysmeta);
533
            // check it
534
            assertEquals(policy.getPreferredMemberNode(0).getValue(), sysmeta.getReplicationPolicy().getPreferredMemberNode(0).getValue());
535
            
536
        } catch(Exception e) {
537
           
538
                fail("Unexpected error: " + e.getMessage());
539
           
540
            
541
        }
542
	    try {
543
	        //v2 mn should fail
544
            Session session = getCNSession();
430 545
			Identifier guid = new Identifier();
431 546
			guid.setValue("testReplicationPolicy." + System.currentTimeMillis());
432 547
			InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
433 548
			SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
434
	    long serialVersion = 1L;
549
			NodeReference nr = new NodeReference();
550
            nr.setValue(MockCNode.V2MNNODEID);
551
            sysmeta.setOriginMemberNode(nr);
552
            sysmeta.setAuthoritativeMemberNode(nr);
553
	        long serialVersion = 1L;
435 554

  
436 555
			// save it
437 556
			Identifier retGuid = CNodeService.getInstance(request).registerSystemMetadata(session, guid, sysmeta);
......
452 571
			
453 572
        } catch(Exception e) {
454 573
            e.printStackTrace();
455
            if(e instanceof ServiceFailure) {
456
                assertTrue(e.getMessage().contains("Couldn't determine the authoritative member node"));
574
            if(e instanceof NotAuthorized) {
575
                assertTrue(e.getMessage().contains("The Coordinating Node is not authorized to make systemMetadata changes"));
457 576
            } else {
458 577
                fail("Unexpected error: " + e.getMessage());
459 578
            }
......
1454 1573
  }
1455 1574
  
1456 1575
  public void testArchive() throws Exception {
1457
      Session session = getCNSession();
1458
      Identifier guid = new Identifier();
1459
      guid.setValue("testArchive." + System.currentTimeMillis());
1460
      InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
1461
      SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
1462
      Identifier pid = CNodeService.getInstance(request).create(session, guid, object, sysmeta);
1463 1576
      try {
1577
          Session session = getCNSession();
1578
          Identifier guid = new Identifier();
1579
          guid.setValue("testArchive." + System.currentTimeMillis());
1580
          InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
1581
          SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
1582
          NodeReference nr = new NodeReference();
1583
          nr.setValue(MockCNode.V1MNNODEID);
1584
          sysmeta.setOriginMemberNode(nr);
1585
          sysmeta.setAuthoritativeMemberNode(nr);
1586
          Identifier pid = CNodeService.getInstance(request).create(session, guid, object, sysmeta);
1464 1587
          CNodeService.getInstance(request).archive(session, guid);
1465 1588
      } catch (Exception e) {
1466 1589
         e.printStackTrace();
1467
         if(e instanceof ServiceFailure) {
1468
          assertTrue(e.getMessage().contains("Couldn't determine the authoritative member node"));
1469
        } else {
1470
          fail("Unexpected error: " + e.getMessage());
1471
        }
1590
         fail("Unexpected error: " + e.getMessage());
1472 1591
     }
1592
      
1593
      try {
1594
          //v2 mn should faile
1595
          Session session = getCNSession();
1596
          Identifier guid = new Identifier();
1597
          guid.setValue("testArchive." + System.currentTimeMillis());
1598
          InputStream object = new ByteArrayInputStream("test".getBytes("UTF-8"));
1599
          SystemMetadata sysmeta = createSystemMetadata(guid, session.getSubject(), object);
1600
          NodeReference nr = new NodeReference();
1601
          nr.setValue(MockCNode.V2MNNODEID);
1602
          sysmeta.setOriginMemberNode(nr);
1603
          sysmeta.setAuthoritativeMemberNode(nr);
1604
          Identifier pid = CNodeService.getInstance(request).create(session, guid, object, sysmeta);
1605
          CNodeService.getInstance(request).archive(session, guid);
1606
      } catch (Exception e) {
1607
         e.printStackTrace();
1608
         if(e instanceof NotAuthorized) {
1609
             assertTrue(e.getMessage().contains("The Coordinating Node is not authorized to make systemMetadata changes"));
1610
         } else {
1611
             fail("Unexpected error: " + e.getMessage());
1612
         }
1613
     }
1473 1614
  }
1474 1615
  
1475 1616
  

Also available in: Unified diff