Skip to content

Commit

Permalink
filter the agents that meet requirement
Browse files Browse the repository at this point in the history
  • Loading branch information
zhou9584 committed Jan 2, 2024
1 parent d4f5b12 commit fc82a05
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,10 @@ public ApkReport analysisPackage(ApkReport report, File file, File outputFolder,

@Override
public ApkReport scanSensitiveWords(ApkReport report, File file, File outputFolder, AnalysisTask.AnalysisConfig config, Logger logger) {

ApkLeaksExecutor apkLeaksExecutor = new ApkLeaksExecutor(outputFolder);
apkLeaksExecutor.analyzeLeaks(report, file.getAbsolutePath(), config.getAnalysisConfig(), logger);
if (ApkLeaksExecutor.EXECUTOR_TYPE.equals(config.getExecutor())) {
ApkLeaksExecutor apkLeaksExecutor = new ApkLeaksExecutor(outputFolder);
apkLeaksExecutor.analyzeLeaks(report, file.getAbsolutePath(), config.getAnalysisConfig(), logger);
}
return report;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

public class ApkAnalyzeExecutor {
static final Charset CHARSET = StandardCharsets.UTF_8;
public static final String EXECUTOR_TYPE = "apk_analyzer";
public static final String EXECUTOR_TYPE = "apkanalyzer";
private final File workingDir;

public ApkAnalyzeExecutor(File outputFolder) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public class ApkCanaryExecutor {
private final File configTemplate;
private final File canaryJar;
private final File workingDir;
public static final String EXECUTOR_TYPE = "apk_canary";
public static final String EXECUTOR_TYPE = "apkcanary";

public ApkCanaryExecutor(File folder) {
workingDir = folder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ public class ApkLeaksExecutor {
private static final String CONFIG_FILE_NAME = "apk_leaks_config.json";
private final File configTemplate;
private final File workingDir;
public static final String EXECUTOR_TYPE = "apkleaks";

public ApkLeaksExecutor(File folder) {
workingDir = folder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import com.microsoft.hydralab.center.openai.SuggestionService;
import com.microsoft.hydralab.center.repository.AgentUserRepository;
import com.microsoft.hydralab.center.util.MetricUtil;
import com.microsoft.hydralab.common.entity.agent.AgentFunctionAvailability;
import com.microsoft.hydralab.common.entity.agent.EnvCapabilityRequirement;
import com.microsoft.hydralab.common.entity.agent.MobileDevice;
import com.microsoft.hydralab.common.entity.center.AgentDeviceGroup;
import com.microsoft.hydralab.common.entity.center.DeviceGroup;
Expand Down Expand Up @@ -744,16 +746,35 @@ private JSONObject runAnalysisTask(TestTaskSpec testTaskSpec) {
List<AnalysisTask.AnalysisConfig> analysisConfigs = testTaskSpec.analysisConfigs;
Assert.notEmpty(analysisConfigs, "No analysis config found!");
JSONObject result = new JSONObject();
List<AnalysisTask.AnalysisConfig> configs = testTaskSpec.analysisConfigs;

List<AgentDeviceGroup> availableAgents = new ArrayList<>();

for (AgentDeviceGroup tempAgentDeviceGroup : agentDeviceGroups.values()) {
AgentFunctionAvailability function = tempAgentDeviceGroup.getFunctionAvailabilities().stream()
.filter(functionAvailability -> functionAvailability.getFunctionName().equals(testTaskSpec.runningType)).findFirst().get();
if (function.isAvailable() && function.isEnabled()) {
List<EnvCapabilityRequirement> requirements = function.getEnvCapabilityRequirements();
boolean isMatch = true;
for (AnalysisTask.AnalysisConfig config : configs) {
if ("apkcanary".equals(config.getExecutor())) {
continue;
}
isMatch = requirements.stream().anyMatch(requirement -> requirement.getName().equals(config.getExecutor()) && requirement.isReady()) && isMatch;
}
if (isMatch) {
availableAgents.add(tempAgentDeviceGroup);
}
}
}

List<AgentDeviceGroup> availableAgents =
agentDeviceGroups.values().stream().filter(agentDeviceGroup -> agentDeviceGroup.getAvailableAnalysisTaskCount().get(testTaskSpec.runningType) > 0).collect(
Collectors.toList());
Assert.notEmpty(availableAgents, "No available agent found!");
Collections.shuffle(availableAgents);

AgentDeviceGroup agentDeviceGroup = null;

for (AgentDeviceGroup availableAgent : availableAgents) {
if (!isAgentUpdating(availableAgent.getAgentId())) {
if (!isAgentUpdating(availableAgent.getAgentId()) && availableAgent.getAvailableAnalysisTaskCount().get(testTaskSpec.runningType) > 0) {
agentDeviceGroup = availableAgent;
break;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
@Data
public class EnvCapabilityRequirement {
boolean isReady = false;
String name;
EnvCapability envCapability;

public EnvCapabilityRequirement() {
Expand All @@ -20,5 +21,11 @@ public EnvCapabilityRequirement() {
*/
public EnvCapabilityRequirement(EnvCapability.CapabilityKeyword keyword, int majorVersion, int minorVersion) {
envCapability = new EnvCapability(keyword, majorVersion, minorVersion);
this.name = keyword.toString();
}

public EnvCapabilityRequirement(EnvCapability.CapabilityKeyword keyword, int majorVersion, int minorVersion, String name) {
envCapability = new EnvCapability(keyword, majorVersion, minorVersion);
this.name = name;
}
}

0 comments on commit fc82a05

Please sign in to comment.