blob: cffaca3a7947c2eee184675e7b342defbeda67e8 [file] [log] [blame]
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.security.KeyStore;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.Locale;
import javax.net.ssl.TrustManager;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.X509TrustManager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public final class FoundryTest {
private static final Boolean REMOTE_PROP =
Boolean.valueOf(System.getProperty("android.remote.run"));
@Test
public void testAapt2() throws Exception {
if (REMOTE_PROP) {
File testLocalDir = new File(".");
String osName = System.getProperty("os.name").toLowerCase();
if (osName.equalsIgnoreCase("Linux")) {
execute("prebuilts/tools/common/aapt/" + osName + "/aapt2 -h", null, 1);
} else {
execute(
"prebuilts/tools/common/aapt/"
+ osName
+ "/aapt2 -h".replace('/', File.separatorChar),
null,
1);
}
}
}
@Test
public void testCA() throws Exception {
if (REMOTE_PROP) {
TrustManagerFactory factory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
factory.init((KeyStore) null);
for (TrustManager manager : factory.getTrustManagers()) {
if (manager instanceof X509TrustManager) {
X509Certificate[] issurers = ((X509TrustManager) manager).getAcceptedIssuers();
for (X509Certificate c : issurers) {
System.out.println(c);
}
if (issurers.length != 0) {
return;
}
}
}
throw new AssertionError("No issurers found");
}
}
@Test
public void testCustomDockerImage() throws Exception {
if (REMOTE_PROP) {
String studioImageEnv = System.getenv("STUDIO_IMAGE");
String expectedStudioImageEnv = "true";
assertEquals(expectedStudioImageEnv, studioImageEnv);
}
}
@Test
public void testRandom() throws Exception {
// TODO(navabi): Write testRandom() to test urandom on our rbe docker container.
}
@Test
public void testCreateFile() {
if (REMOTE_PROP) {
File tempDir = new File("/tmp");
String filename = "你所有的基地都属于我们.txt";
System.out.println("locale info: " + Locale.getDefault());
System.out.println("defaultCharset: " + Charset.defaultCharset());
try {
File file = new File(tempDir, filename);
file.createNewFile();
System.out.println("File created.");
System.out.println("tempDir.list(): " + Arrays.toString(tempDir.list()));
assertTrue(Arrays.asList(tempDir.list()).contains(filename));
} catch (IOException e) {
fail("File with non-ascii name failed to be created.");
}
}
}
@Test
public void testArmLinuxLinker() {
if (REMOTE_PROP) {
execute(
"prebuilts/studio/sdk/linux/build-tools/28.0.3/arm-linux-androideabi-ld --help");
}
}
@Test
public void testJdkVersion() throws IOException {
if (REMOTE_PROP) {
String javaVersionInUse = System.getProperty("java.version");
// Get the java version from our prebuilts jdk.
ProcessBuilder builder =
new ProcessBuilder("prebuilts/studio/jdk/linux/bin/java", "-version");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String firstLine = r.readLine(); // e.g. openjdk version "1.8.0_152-release"
int lastQuote = firstLine.lastIndexOf("\"");
int openQuote = firstLine.substring(0, lastQuote).lastIndexOf("\"");
String prebuiltsJavaVersion = firstLine.substring(openQuote + 1, lastQuote);
assertEquals(javaVersionInUse, prebuiltsJavaVersion);
}
}
private void execute(String command) {
execute(command, null, 0);
}
private void execute(String command, String[] env, int expectedExitValue) {
try {
Process proc =
env != null
? Runtime.getRuntime().exec(command, env)
: Runtime.getRuntime().exec(command);
BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream()));
BufferedReader error = new BufferedReader(new InputStreamReader(proc.getErrorStream()));
int exitVal = proc.waitFor();
String line;
while ((line = input.readLine()) != null) {
System.out.println(line);
}
System.out.println("Error Stream");
while ((line = error.readLine()) != null) {
System.out.println(line);
}
input.close();
error.close();
System.out.println("Process exitValue: " + exitVal);
assertTrue(exitVal == expectedExitValue);
} catch (Throwable t) {
t.printStackTrace();
fail("Could not run " + command);
}
}
}