Skip to content

Commit 5a1adc5

Browse files
committed
Java: buildless: proxy test with maven
1 parent a35be08 commit 5a1adc5

File tree

11 files changed

+331
-0
lines changed

11 files changed

+331
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
https://repo.maven.apache.org/maven2/com/feiniaojin/naaf/naaf-graceful-response-example/1.0/naaf-graceful-response-example-1.0.jar
2+
https://repo.maven.apache.org/maven2/com/github/MoebiusSolutions/avro-registry-in-source/avro-registry-in-source-tests/1.8/avro-registry-in-source-tests-1.8.jar
3+
https://repo.maven.apache.org/maven2/com/github/MoebiusSolutions/avro-registry-in-source/example-project/1.5/example-project-1.5.jar
4+
https://repo.maven.apache.org/maven2/com/intuit/benten/benten-examples/0.1.5/benten-examples-0.1.5.jar
5+
https://repo.maven.apache.org/maven2/com/jakewharton/twirl/sample-runtime/1.2.0/sample-runtime-1.2.0.jar
6+
https://repo.maven.apache.org/maven2/com/mattunderscore/code/generation/specky/plugin-example/0.8.0/plugin-example-0.8.0.jar
7+
https://repo.maven.apache.org/maven2/com/microsoft/tang/tang-test-jarAB/0.9/tang-test-jarAB-0.9.jar
8+
https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-example_2.11/0.1.2/rx-redis-example_2.11-0.1.2.jar
9+
https://repo.maven.apache.org/maven2/de/knutwalker/rx-redis-java-example_2.11/0.1.2/rx-redis-java-example_2.11-0.1.2.jar
10+
https://repo.maven.apache.org/maven2/io/github/scrollsyou/example-spring-boot-starter/1.0.0/example-spring-boot-starter-1.0.0.jar
11+
https://repo.maven.apache.org/maven2/io/streamnative/com/example/maven-central-template/server/3.0.0/server-3.0.0.jar
12+
https://repo.maven.apache.org/maven2/junit/junit/4.11/junit-4.11.jar
13+
https://repo.maven.apache.org/maven2/no/nav/security/token-validation-ktor-demo/3.1.0/token-validation-ktor-demo-3.1.0.jar
14+
https://repo.maven.apache.org/maven2/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
15+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-fileupload/0.5.10/minijax-example-fileupload-0.5.10.jar
16+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-inject/0.5.10/minijax-example-inject-0.5.10.jar
17+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-json/0.5.10/minijax-example-json-0.5.10.jar
18+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-mustache/0.5.10/minijax-example-mustache-0.5.10.jar
19+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-petclinic/0.5.10/minijax-example-petclinic-0.5.10.jar
20+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-security/0.5.10/minijax-example-security-0.5.10.jar
21+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-ssl/0.5.10/minijax-example-ssl-0.5.10.jar
22+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-todo-backend/0.5.10/minijax-example-todo-backend-0.5.10.jar
23+
https://repo.maven.apache.org/maven2/org/minijax/minijax-example-websocket/0.5.10/minijax-example-websocket-0.5.10.jar
24+
https://repo.maven.apache.org/maven2/org/scalamock/scalamock-examples_2.10/3.6.0/scalamock-examples_2.10-3.6.0.jar
25+
https://repo.maven.apache.org/maven2/org/somda/sdc/glue-examples/4.0.0/glue-examples-4.0.0.jar
26+
https://repo.maven.apache.org/maven2/us/fatehi/schemacrawler-examplecode/16.20.2/schemacrawler-examplecode-16.20.2.jar
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{
2+
"markdownMessage": "Java analysis used build tool Maven to pick a JDK version and/or to recommend external dependencies.",
3+
"severity": "unknown",
4+
"source": {
5+
"extractorName": "java",
6+
"id": "java/autobuilder/buildless/using-build-tool-advice",
7+
"name": "Java analysis used build tool Maven to pick a JDK version and/or to recommend external dependencies"
8+
},
9+
"visibility": {
10+
"cliSummaryTable": true,
11+
"statusPage": false,
12+
"telemetry": true
13+
}
14+
}
15+
{
16+
"markdownMessage": "Java analysis used the system default JDK.",
17+
"severity": "unknown",
18+
"source": {
19+
"extractorName": "java",
20+
"id": "java/autobuilder/buildless/jdk-system-default",
21+
"name": "Java analysis used the system default JDK"
22+
},
23+
"visibility": {
24+
"cliSummaryTable": true,
25+
"statusPage": false,
26+
"telemetry": true
27+
}
28+
}
29+
{
30+
"markdownMessage": "Java analysis with build-mode 'none' completed.",
31+
"severity": "unknown",
32+
"source": {
33+
"extractorName": "java",
34+
"id": "java/autobuilder/buildless/complete",
35+
"name": "Java analysis with build-mode 'none' completed"
36+
},
37+
"visibility": {
38+
"cliSummaryTable": true,
39+
"statusPage": false,
40+
"telemetry": true
41+
}
42+
}
43+
{
44+
"markdownMessage": "Java was extracted with build-mode set to 'none'. This means that all Java source in the working directory will be scanned, with build tools such as Maven and Gradle only contributing information about external dependencies.",
45+
"severity": "note",
46+
"source": {
47+
"extractorName": "java",
48+
"id": "java/autobuilder/buildless/mode-active",
49+
"name": "Java was extracted with build-mode set to 'none'"
50+
},
51+
"visibility": {
52+
"cliSummaryTable": true,
53+
"statusPage": true,
54+
"telemetry": true
55+
}
56+
}
57+
{
58+
"markdownMessage": "Reading the dependency graph from build files provided 2 classpath entries",
59+
"severity": "unknown",
60+
"source": {
61+
"extractorName": "java",
62+
"id": "java/autobuilder/buildless/depgraph-provided-by-maven",
63+
"name": "Java analysis extracted precise dependency graph information from tool Maven"
64+
},
65+
"visibility": {
66+
"cliSummaryTable": true,
67+
"statusPage": false,
68+
"telemetry": true
69+
}
70+
}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4+
<modelVersion>4.0.0</modelVersion>
5+
6+
<groupId>com.example</groupId>
7+
<artifactId>maven-sample</artifactId>
8+
<version>1.0-SNAPSHOT</version>
9+
10+
<name>maven-sample</name>
11+
<!-- FIXME change it to the project's website -->
12+
<url>http://www.example.com</url>
13+
14+
<properties>
15+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16+
<maven.compiler.source>1.7</maven.compiler.source>
17+
<maven.compiler.target>1.7</maven.compiler.target>
18+
</properties>
19+
20+
<dependencies>
21+
<dependency>
22+
<groupId>junit</groupId>
23+
<artifactId>junit</artifactId>
24+
<version>4.11</version>
25+
<scope>test</scope>
26+
</dependency>
27+
</dependencies>
28+
29+
<build>
30+
<plugins>
31+
<plugin>
32+
<artifactId>exec-maven-plugin</artifactId>
33+
<groupId>org.codehaus.mojo</groupId>
34+
<version>1.1.1</version>
35+
<executions>
36+
<execution>
37+
<id>check-maven-version</id>
38+
<phase>package</phase>
39+
<goals>
40+
<goal>java</goal>
41+
</goals>
42+
</execution>
43+
</executions>
44+
<configuration>
45+
<mainClass>com.example.App</mainClass>
46+
</configuration>
47+
</plugin>
48+
<plugin>
49+
<groupId>com.diffplug.spotless</groupId>
50+
<artifactId>spotless-maven-plugin</artifactId>
51+
<version>2.19.1</version>
52+
<executions>
53+
<execution>
54+
<goals>
55+
<goal>check</goal>
56+
</goals>
57+
<phase>compile</phase>
58+
</execution>
59+
</executions>
60+
<configuration>
61+
<java>
62+
<licenseHeader>
63+
<content>/* FAIL ME */</content>
64+
</licenseHeader>
65+
</java>
66+
</configuration>
67+
</plugin>
68+
</plugins>
69+
<pluginManagement>
70+
<!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
71+
<plugins>
72+
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
73+
<plugin>
74+
<artifactId>maven-clean-plugin</artifactId>
75+
<version>3.1.0</version>
76+
</plugin>
77+
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
78+
<plugin>
79+
<artifactId>maven-resources-plugin</artifactId>
80+
<version>3.0.2</version>
81+
</plugin>
82+
<plugin>
83+
<artifactId>maven-compiler-plugin</artifactId>
84+
<version>3.8.0</version>
85+
</plugin>
86+
<plugin>
87+
<artifactId>maven-surefire-plugin</artifactId>
88+
<version>2.22.1</version>
89+
</plugin>
90+
<plugin>
91+
<artifactId>maven-jar-plugin</artifactId>
92+
<version>3.0.2</version>
93+
</plugin>
94+
<plugin>
95+
<artifactId>maven-install-plugin</artifactId>
96+
<version>2.5.2</version>
97+
</plugin>
98+
<plugin>
99+
<artifactId>maven-deploy-plugin</artifactId>
100+
<version>2.8.2</version>
101+
</plugin>
102+
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
103+
<plugin>
104+
<artifactId>maven-site-plugin</artifactId>
105+
<version>3.7.1</version>
106+
</plugin>
107+
<plugin>
108+
<artifactId>maven-project-info-reports-plugin</artifactId>
109+
<version>3.0.0</version>
110+
</plugin>
111+
</plugins>
112+
</pluginManagement>
113+
</build>
114+
</project>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.example;
2+
3+
import java.util.regex.Pattern;
4+
import java.nio.file.Path;
5+
import java.nio.file.Paths;
6+
7+
/**
8+
* Hello world!
9+
*
10+
*/
11+
public class App
12+
{
13+
public static void main( String[] args )
14+
{
15+
System.out.println( "Hello World!" );
16+
String expectedVersion = System.getenv("EXPECT_MAVEN");
17+
Path mavenHome = Paths.get(System.getProperty("maven.home")).normalize();
18+
String observedVersion = mavenHome.getFileName().toString();
19+
if (expectedVersion != null && !expectedVersion.equals(observedVersion)) {
20+
System.err.println("Wrong maven version, expected '" + expectedVersion + "' but got '" + observedVersion + "'" + mavenHome);
21+
System.exit(1);
22+
}
23+
String commandMatcher = System.getenv("EXPECT_COMMAND_REGEX");
24+
String command = System.getProperty("sun.java.command");
25+
if (commandMatcher != null && !Pattern.matches(commandMatcher, command)) {
26+
System.err.println("Wrong command line, '" + command + "' does not match '" + commandMatcher + "'");
27+
System.exit(1);
28+
}
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
version=1.0
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<html>
2+
<head>
3+
<title>A sample</title>
4+
</head>
5+
<body>
6+
<p>Hello world!</p>
7+
</body>
8+
</html>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<struts>
3+
This is a sample file
4+
</struts>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.example;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import org.junit.Test;
6+
7+
/**
8+
* Unit test for simple App.
9+
*/
10+
public class AppTest
11+
{
12+
/**
13+
* Rigorous Test :-)
14+
*/
15+
@Test
16+
public void shouldAnswerWithTrue()
17+
{
18+
assertTrue( true );
19+
}
20+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#select
2+
| src/main/java/com/example/App.java:0:0:0:0 | App |
3+
| src/test/java/com/example/AppTest.java:0:0:0:0 | AppTest |
4+
xmlFiles
5+
| pom.xml:0:0:0:0 | pom.xml |
6+
| src/main/resources/page.xml:0:0:0:0 | src/main/resources/page.xml |
7+
| src/main/resources/struts.xml:0:0:0:0 | src/main/resources/struts.xml |
8+
propertiesFiles
9+
| src/main/resources/my-app.properties:0:0:0:0 | src/main/resources/my-app.properties |
10+
| test-db/log/ext/javac.properties:0:0:0:0 | test-db/log/ext/javac.properties |
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from create_database_utils import *
2+
from diagnostics_test_utils import *
3+
from buildless_test_utils import *
4+
import mitm_proxy
5+
import os
6+
import shutil
7+
import subprocess
8+
import sys
9+
10+
shutil.rmtree('certs', ignore_errors=True)
11+
os.mkdir('certs')
12+
13+
ca_cert_file = 'certs/ca-cert.pem'
14+
ca_key_file = 'certs/ca-key.pem'
15+
mitm_proxy.generateCA(ca_cert_file, ca_key_file)
16+
with open(ca_cert_file, 'rb') as f:
17+
cert_pem = f.read().decode('ascii')
18+
19+
# This starts an HTTP proxy server on http://localhost:9431
20+
proxy_server_process = subprocess.Popen(
21+
[sys.executable, mitm_proxy.__file__, "9431", "certs/ca-cert.pem", "certs/ca-key.pem"], env={
22+
"PROXY_USER": "proxy",
23+
"PROXY_PASSWORD": "password"
24+
})
25+
26+
try:
27+
run_codeql_database_create([], lang="java", extra_env={
28+
"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS": "true",
29+
"CODEQL_EXTRACTOR_JAVA_OPTION_BUILDLESS_CLASSPATH_FROM_BUILD_FILES": "true",
30+
"CODEQL_PROXY_HOST": "localhost",
31+
"CODEQL_PROXY_PORT": "9431",
32+
"CODEQL_PROXY_USER": "proxy",
33+
"CODEQL_PROXY_PASSWORD": "password",
34+
"CODEQL_PROXY_CA_CERTIFICATE": cert_pem
35+
})
36+
finally:
37+
proxy_server_process.kill()
38+
check_diagnostics()
39+
check_buildless_fetches()

0 commit comments

Comments
 (0)