| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.hadoop.yarn; |
| |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.apache.hadoop.yarn.api.records.ApplicationAttemptId; |
| import org.apache.hadoop.yarn.api.records.ApplicationId; |
| import org.apache.hadoop.yarn.api.records.ApplicationReport; |
| import org.apache.hadoop.yarn.api.records.FinalApplicationStatus; |
| import org.apache.hadoop.yarn.api.records.YarnApplicationState; |
| import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport; |
| import org.apache.hadoop.yarn.util.Records; |
| |
| import com.google.common.collect.Iterators; |
| import com.google.common.collect.Lists; |
| |
| /** |
| * Utilities to generate fake test apps |
| */ |
| public class MockApps { |
| static final Iterator<String> NAMES = Iterators.cycle("SleepJob", |
| "RandomWriter", "TeraSort", "TeraGen", "PigLatin", "WordCount", |
| "I18nApp<☯>"); |
| static final Iterator<String> USERS = Iterators.cycle("dorothy", "tinman", |
| "scarecrow", "glinda", "nikko", "toto", "winkie", "zeke", "gulch"); |
| static final Iterator<YarnApplicationState> STATES = Iterators.cycle( |
| YarnApplicationState.values()); |
| static final Iterator<String> QUEUES = Iterators.cycle("a.a1", "a.a2", |
| "b.b1", "b.b2", "b.b3", "c.c1.c11", "c.c1.c12", "c.c1.c13", |
| "c.c2", "c.c3", "c.c4"); |
| static final long TS = System.currentTimeMillis(); |
| |
| public static String newAppName() { |
| synchronized(NAMES) { |
| return NAMES.next(); |
| } |
| } |
| |
| public static String newUserName() { |
| synchronized(USERS) { |
| return USERS.next(); |
| } |
| } |
| |
| public static String newQueue() { |
| synchronized(QUEUES) { |
| return QUEUES.next(); |
| } |
| } |
| |
| public static List<ApplicationReport> genApps(int n) { |
| List<ApplicationReport> list = Lists.newArrayList(); |
| for (int i = 0; i < n; ++i) { |
| list.add(newApp(i)); |
| } |
| return list; |
| } |
| |
| public static ApplicationReport newApp(int i) { |
| final ApplicationId id = newAppID(i); |
| final YarnApplicationState state = newAppState(); |
| final String user = newUserName(); |
| final String name = newAppName(); |
| final String queue = newQueue(); |
| final FinalApplicationStatus finishState = FinalApplicationStatus.UNDEFINED; |
| return new ApplicationReport() { |
| private ApplicationResourceUsageReport appUsageReport; |
| @Override public ApplicationId getApplicationId() { return id; } |
| @Override public String getUser() { return user; } |
| @Override public String getName() { return name; } |
| @Override public YarnApplicationState getYarnApplicationState() { return state; } |
| @Override public String getQueue() { return queue; } |
| @Override public String getTrackingUrl() { return ""; } |
| @Override public String getOriginalTrackingUrl() { return ""; } |
| @Override public FinalApplicationStatus getFinalApplicationStatus() { return finishState; } |
| @Override |
| public ApplicationResourceUsageReport getApplicationResourceUsageReport() { |
| return this.appUsageReport; |
| } |
| public void setApplicationId(ApplicationId applicationId) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public void setTrackingUrl(String url) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override public void setOriginalTrackingUrl(String url) { } |
| @Override |
| public void setApplicationResourceUsageReport(ApplicationResourceUsageReport appResources) { |
| this.appUsageReport = appResources; |
| } |
| @Override |
| public void setName(String name) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public void setQueue(String queue) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public void setYarnApplicationState(YarnApplicationState state) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public void setUser(String user) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public String getDiagnostics() { |
| // TODO Auto-generated method stub |
| return null; |
| } |
| @Override |
| public void setDiagnostics(String diagnostics) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public String getHost() { |
| // TODO Auto-generated method stub |
| return null; |
| } |
| @Override |
| public void setHost(String host) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public int getRpcPort() { |
| // TODO Auto-generated method stub |
| return 0; |
| } |
| @Override |
| public void setRpcPort(int rpcPort) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public String getClientToken() { |
| // TODO Auto-generated method stub |
| return null; |
| } |
| @Override |
| public void setClientToken(String clientToken) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public long getStartTime() { |
| // TODO Auto-generated method stub |
| return 0; |
| } |
| |
| @Override |
| public void setStartTime(long startTime) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public long getFinishTime() { |
| // TODO Auto-generated method stub |
| return 0; |
| } |
| @Override |
| public void setFinishTime(long finishTime) { |
| // TODO Auto-generated method stub |
| |
| } |
| @Override |
| public void setFinalApplicationStatus(FinalApplicationStatus finishState) { |
| // TODO Auto-generated method stub |
| } |
| }; |
| } |
| |
| public static ApplicationId newAppID(int i) { |
| ApplicationId id = Records.newRecord(ApplicationId.class); |
| id.setClusterTimestamp(TS); |
| id.setId(i); |
| return id; |
| } |
| |
| public static ApplicationAttemptId newAppAttemptID(ApplicationId appId, int i) { |
| ApplicationAttemptId id = Records.newRecord(ApplicationAttemptId.class); |
| id.setApplicationId(appId); |
| id.setAttemptId(i); |
| return id; |
| } |
| |
| public static YarnApplicationState newAppState() { |
| synchronized(STATES) { |
| return STATES.next(); |
| } |
| } |
| |
| } |