@@ -72,6 +72,54 @@ def test_hdfs_arguments(self):
72
72
self .assertEquals ('DYNAMIC' , args .replicationStrategy )
73
73
self .assertFalse (args .preserveXAttrs )
74
74
75
+ def test_hdfs_cloud_arguments (self ):
76
+ RAW = '''{
77
+ "sourceService" : {
78
+ "peerName" : "vst2",
79
+ "clusterName" : "Cluster 1 - CDH4",
80
+ "serviceName" : "HDFS-1"
81
+ },
82
+ "sourcePath" : "/data",
83
+ "destinationPath" : "/copy/data2",
84
+ "mapreduceServiceName" : "MAPREDUCE-1",
85
+ "schedulerPoolName" : "medium",
86
+ "userName" : "systest",
87
+ "dryRun" : false,
88
+ "abortOnError" : true,
89
+ "removeMissingFiles" : false,
90
+ "preserveReplicationCount" : true,
91
+ "preserveBlockSize" : true,
92
+ "preservePermissions" : false,
93
+ "skipTrash" : false,
94
+ "replicationStrategy" : "DYNAMIC",
95
+ "logPath" : "/tmp",
96
+ "bandwidthPerMap" : "20",
97
+ "preserveXAttrs" : false,
98
+ "exclusionFilters" : ["ac"],
99
+ "cloudAccount" : "someTestAccount",
100
+ "cloudService" : "TARGET"
101
+ }'''
102
+ args = utils .deserialize (RAW , ApiHdfsCloudReplicationArguments )
103
+ self .assertEquals ('vst2' , args .sourceService .peerName )
104
+ self .assertEquals ('Cluster 1 - CDH4' , args .sourceService .clusterName )
105
+ self .assertEquals ('HDFS-1' , args .sourceService .serviceName )
106
+ self .assertEquals ('/data' , args .sourcePath )
107
+ self .assertEquals ('/copy/data2' , args .destinationPath )
108
+ self .assertEquals ('MAPREDUCE-1' , args .mapreduceServiceName )
109
+ self .assertEquals ('medium' , args .schedulerPoolName )
110
+ self .assertEquals ('systest' , args .userName )
111
+ self .assertFalse (args .dryRun )
112
+ self .assertTrue (args .abortOnError )
113
+ self .assertFalse (args .removeMissingFiles )
114
+ self .assertTrue (args .preserveBlockSize )
115
+ self .assertFalse (args .preservePermissions )
116
+ self .assertTrue (args .preserveReplicationCount )
117
+ self .assertFalse (args .skipTrash )
118
+ self .assertEquals ('DYNAMIC' , args .replicationStrategy )
119
+ self .assertFalse (args .preserveXAttrs )
120
+ self .assertEquals ('someTestAccount' , args .cloudAccount )
121
+ self .assertEquals ('TARGET' , args .cloudService )
122
+
75
123
def test_hive_arguments (self ):
76
124
RAW = '''{
77
125
"sourceService" : {
@@ -321,5 +369,53 @@ def test_replication_crud(self):
321
369
retdata = return_sched .to_json_dict ())
322
370
service .delete_replication_schedule (1 )
323
371
372
+ def test_hdfs_cloud_replication_crud (self ):
373
+ service = ApiService (self .resource , 'hdfs1' , 'HDFS' )
374
+ service .__dict__ ['clusterRef' ] = ApiClusterRef (self .resource , clusterName = 'cluster1' )
375
+
376
+ hdfs_args = ApiHdfsCloudReplicationArguments (self .resource )
377
+ hdfs_args .sourceService = ApiServiceRef ('cluster2' , 'hdfs2' )
378
+ hdfs_args .sourcePath = '/src'
379
+ hdfs_args .destinationPath = 's3a://somebucket/dst'
380
+ hdfs_args .cloudAccount = 'someTestAccount'
381
+ hdfs_args .cloudService = 'TARGET'
382
+
383
+ return_sched = ApiReplicationSchedule (self .resource ,
384
+ interval = 2 , intervalUnit = 'DAY' )
385
+ return_sched .hdfsCloudArguments = hdfs_args
386
+ return_sched .__dict__ ['id' ] = 1
387
+ return_list = ApiList ([ return_sched ]).to_json_dict ()
388
+
389
+ self .resource .expect ("POST" ,
390
+ "/clusters/cluster1/services/hdfs1/replications" ,
391
+ retdata = return_list )
392
+
393
+ sched = service .create_replication_schedule (
394
+ None , None , 'DAY' , 2 , True , hdfs_args , alert_on_fail = True )
395
+ self .assertEqual (return_sched .intervalUnit , sched .intervalUnit )
396
+ self .assertEqual (return_sched .interval , sched .interval )
397
+ self .assertIsInstance (sched .hdfsCloudArguments , ApiHdfsCloudReplicationArguments )
398
+
399
+ self .resource .expect ("GET" ,
400
+ "/clusters/cluster1/services/hdfs1/replications" ,
401
+ retdata = return_list )
402
+ service .get_replication_schedules ()
403
+
404
+ self .resource .expect ("GET" ,
405
+ "/clusters/cluster1/services/hdfs1/replications/1" ,
406
+ retdata = return_sched .to_json_dict ())
407
+ service .get_replication_schedule (1 )
408
+
409
+ self .resource .expect ("PUT" ,
410
+ "/clusters/cluster1/services/hdfs1/replications/1" ,
411
+ data = return_sched ,
412
+ retdata = return_sched .to_json_dict ())
413
+ service .update_replication_schedule (1 , return_sched )
414
+
415
+ self .resource .expect ("DELETE" ,
416
+ "/clusters/cluster1/services/hdfs1/replications/1" ,
417
+ retdata = return_sched .to_json_dict ())
418
+ service .delete_replication_schedule (1 )
419
+
324
420
if __name__ == '__main__' :
325
421
unittest .main ()
0 commit comments