Skip to content

Commit 71a425c

Browse files
committed
prueba
1 parent 0d6061c commit 71a425c

File tree

4 files changed

+21
-55
lines changed

4 files changed

+21
-55
lines changed

src/main/java/edu/uniandes/tsdl/mutapk/MutAPK.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ public static void runMutAPK(String[] args) throws NumberFormatException, Except
257257
File resource = new File(apkAbsolutePath + File.separator + "res");
258258

259259
// Create ApkHashSeparator
260-
ApkHashSeparator apkHashSeparator = mProcessor.generateApkHashSeparator(manifest, smali, resource);
260+
ApkHashSeparator apkHashSeparator = mProcessor.generateApkHashSeparator(manifest, smali, resource, 0);
261261
// Add the base apkHashSeparator
262262
ApkHashOrder.getInstance().setApkHashSeparator(apkHashSeparator);
263263

src/main/java/edu/uniandes/tsdl/mutapk/hashfunction/sha3/ApkHashOrder.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,17 @@ public static ApkHashOrder getInstance() {
3737
}
3838

3939
public synchronized ApkHashSeparator setApkHashSeparator(ApkHashSeparator nuevoApkHashSeparator) {
40-
boolean isInCollection = apkHashesSeparator.containsKey(nuevoApkHashSeparator);
41-
ApkHashSeparator apkHashSeparatorDuplicate = null;
42-
if (isInCollection) {
43-
apkHashSeparatorDuplicate = apkHashesSeparator.get(nuevoApkHashSeparator);
40+
ApkHashSeparator apkHashSeparatorDuplicate = apkHashesSeparator.get(nuevoApkHashSeparator);
41+
if (apkHashSeparatorDuplicate != null && apkHashSeparatorDuplicate.equals(nuevoApkHashSeparator)) {
42+
return apkHashSeparatorDuplicate;
4443
} else {
4544
nuevoApkHashSeparator.setId(id);
4645
apkHashesSeparator.put(nuevoApkHashSeparator, nuevoApkHashSeparator);
4746
id++;
47+
return null;
4848
}
49-
return apkHashSeparatorDuplicate;
5049
}
51-
50+
5251
public synchronized int getId() {
5352
return id;
5453
}

src/main/java/edu/uniandes/tsdl/mutapk/hashfunction/sha3/ApkHashSeparator.java

Lines changed: 11 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,23 @@
55
@EqualsAndHashCode
66
public class ApkHashSeparator {
77

8-
@EqualsAndHashCode.Exclude private int id = -1;
8+
@EqualsAndHashCode.Exclude private int id = -1;
99
private final String hashManifest;
1010
private final String hashSmali;
1111
private final String hashResource;
12+
@EqualsAndHashCode.Exclude private final int mutanteId;
1213

1314
public static class Builder {
1415
private final String hashManifest;
1516
private final String hashSmali;
1617
private final String hashResource;
18+
private final int mutanteId;
1719

18-
public Builder(String hashManifest, String hashsmali, String hashResource) {
20+
public Builder(String hashManifest, String hashsmali, String hashResource, int mutanteId) {
1921
this.hashManifest = hashManifest;
2022
this.hashSmali = hashsmali;
2123
this.hashResource = hashResource;
24+
this.mutanteId = mutanteId;
2225
}
2326

2427
public ApkHashSeparator build() {
@@ -30,6 +33,7 @@ private ApkHashSeparator(Builder builder) {
3033
this.hashManifest = builder.hashManifest;
3134
this.hashSmali = builder.hashSmali;
3235
this.hashResource = builder.hashResource;
36+
this.mutanteId = builder.mutanteId;
3337
}
3438

3539
public int getId() {
@@ -39,7 +43,7 @@ public int getId() {
3943
public void setId(int id) {
4044
this.id = id;
4145
}
42-
46+
4347
public String getHashManifest() {
4448
return hashManifest;
4549
}
@@ -52,47 +56,10 @@ public String getHashResource() {
5256
return hashResource;
5357
}
5458

55-
// @Override
56-
// public boolean equals(Object o) {
57-
// if (o == this) {
58-
// return true;
59-
// } else if (!(o instanceof ApkHashSeparator)) {
60-
// return false;
61-
// } else {
62-
// ApkHashSeparator apkHashseparator = (ApkHashSeparator) o;
63-
//// boolean isEqualManifest = hashManifest.equals(apkHashseparator.getHashManifest());
64-
//// boolean isEqualSmali = isEqual(apkHashseparator.getHashSmali(), hashSmali);
65-
//// boolean isEqualResource = isEqual(apkHashseparator.getHashResource(), hashResource);
66-
// return hashManifest.equals(apkHashseparator.getHashManifest())
67-
// && hashSmali.equals(apkHashseparator.getHashSmali())
68-
// && hashResource.equals(apkHashseparator.getHashResource());
69-
// }
70-
//
71-
// }
72-
//
73-
//// private boolean isEqual(String hash, String compare) {
74-
//// if (hash.length() != compare.length()) {
75-
//// return false;
76-
//// }
77-
//// String[] hashes = hash.split("|");
78-
//// String[] compares = compare.split("|");
79-
//// for (int i = 0; i < hashes.length; i++) {
80-
//// if (!compares[i].equals(hashes[i])) {
81-
//// return false;
82-
//// }
83-
//// }
84-
//// return true;
85-
//// }
86-
//
87-
// @Override
88-
// public int hashCode() {
89-
// int result = hashManifest.hashCode();
90-
// result = 31 * result + hashSmali.hashCode();
91-
// result = 31 * result + hashResource.hashCode();
92-
// return result;
93-
// }
94-
95-
59+
public int getMutanteId() {
60+
return mutanteId;
61+
}
62+
9663
@Override
9764
public String toString() {
9865
return hashManifest + "|" + hashResource + "|" + hashSmali;

src/main/java/edu/uniandes/tsdl/mutapk/processors/MutationsProcessor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private void verifyDuplicateMutants(String extraPath, String apkName, int mutant
9898
File manifest = new File(mutantFolder + File.separator + "AndroidManifest.xml");
9999
File smali = new File(mutantFolder + File.separator + "smali");
100100
File resource = new File(mutantFolder + File.separator + "res");
101-
ApkHashSeparator apkHashSeparator = this.generateApkHashSeparator(manifest, smali, resource);
101+
ApkHashSeparator apkHashSeparator = this.generateApkHashSeparator(manifest, smali, resource, mutantIndex);
102102

103103
ApkHashSeparator apkHashSeparatorDuplicate = ApkHashOrder.getInstance()
104104
.setApkHashSeparator(apkHashSeparator);
@@ -143,12 +143,12 @@ private void generateMutant(String extraPath, String apkName, int mutantIndex, S
143143
wwriter.flush();
144144
}
145145

146-
public ApkHashSeparator generateApkHashSeparator(File manifest, File smali, File resource)
146+
public ApkHashSeparator generateApkHashSeparator(File manifest, File smali, File resource, int mutanteId)
147147
throws FileNotFoundException, IOException {
148148
String hashManifest = Sha3.sha512FileSeparte(manifest);
149149
String hashSmaliConSeperado = Sha3.sha512FileSeparte(smali);
150150
String hashResourceConSeperado = Sha3.sha512FileSeparte(resource);
151-
ApkHashSeparator apkHashSeparator = new ApkHashSeparator.Builder(hashManifest, hashSmaliConSeperado, hashResourceConSeperado).build();
151+
ApkHashSeparator apkHashSeparator = new ApkHashSeparator.Builder(hashManifest, hashSmaliConSeperado, hashResourceConSeperado, mutanteId).build();
152152
return apkHashSeparator;
153153
}
154154

@@ -166,7 +166,7 @@ public void processMultithreaded(List<MutationLocation> locations, final String
166166
final List<Future<String>> results = new LinkedList<Future<String>>();
167167

168168
writer.write("ThreadPool: " + Runtime.getRuntime().availableProcessors() + "\n");
169-
int mutantIndex = 0;
169+
int mutantIndex = 1;
170170

171171
for (final MutationLocation mutationLocation : locations) {
172172
mutantIndex++;

0 commit comments

Comments
 (0)