()
| 498 | } |
| 499 | |
| 500 | @Test |
| 501 | public void testMultiQueryStores() throws Exception { |
| 502 | int[] nums = new int[100]; |
| 503 | PrintWriter pw = new PrintWriter(Util.createInputFile(cluster, file)); |
| 504 | for(int i = 0; i < MAX; i++) { |
| 505 | int t = r.nextInt(100); |
| 506 | pw.println(t); |
| 507 | nums[t]++; |
| 508 | } |
| 509 | pw.close(); |
| 510 | |
| 511 | int groups = 0; |
| 512 | for (int i : nums) { |
| 513 | if (i > 0) groups++; |
| 514 | } |
| 515 | |
| 516 | PigServer pigServer = new PigServer(cluster.getExecType(), |
| 517 | cluster.getProperties()); |
| 518 | pigServer.setBatchOn(); |
| 519 | pigServer.registerQuery("a = load '" + file + "';"); |
| 520 | pigServer.registerQuery("b = filter a by $0 >= 50;"); |
| 521 | pigServer.registerQuery("c = group b by $0;"); |
| 522 | pigServer.registerQuery("d = foreach c generate group;"); |
| 523 | pigServer.registerQuery("e = filter a by $0 < 50;"); |
| 524 | pigServer.registerQuery("f = group e by $0;"); |
| 525 | pigServer.registerQuery("g = foreach f generate group;"); |
| 526 | pigServer.registerQuery("store d into '/tmp/outout1';"); |
| 527 | pigServer.registerQuery("store g into '/tmp/outout2';"); |
| 528 | List<ExecJob> jobs = pigServer.executeBatch(); |
| 529 | PigStats stats = jobs.get(0).getStatistics(); |
| 530 | |
| 531 | assertTrue(stats.getOutputLocations().size() == 2); |
| 532 | |
| 533 | cluster.getFileSystem().delete(new Path(file), true); |
| 534 | cluster.getFileSystem().delete(new Path("/tmp/outout1"), true); |
| 535 | cluster.getFileSystem().delete(new Path("/tmp/outout2"), true); |
| 536 | |
| 537 | JobStats js = (JobStats)stats.getJobGraph().getSinks().get(0); |
| 538 | |
| 539 | Map<String, Long> entry = js.getMultiStoreCounters(); |
| 540 | long counter = 0; |
| 541 | for (Long val : entry.values()) { |
| 542 | counter += val; |
| 543 | } |
| 544 | |
| 545 | assertEquals(groups, counter); |
| 546 | } |
| 547 | |
| 548 | /* |
| 549 | * IMPORTANT NOTE: |
nothing calls this directly
no test coverage detected