1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.search.backend.smo.internal;
20
21 import java.io.IOException;
22 import java.time.Instant;
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.concurrent.atomic.AtomicInteger;
26
27 import org.apache.maven.search.api.MAVEN;
28 import org.apache.maven.search.api.Record;
29 import org.apache.maven.search.api.SearchRequest;
30 import org.apache.maven.search.api.request.BooleanQuery;
31 import org.apache.maven.search.api.request.FieldQuery;
32 import org.apache.maven.search.api.request.Query;
33 import org.apache.maven.search.backend.smo.SmoSearchBackend;
34 import org.apache.maven.search.backend.smo.SmoSearchResponse;
35 import org.junit.Test;
36
37 public abstract class SmoSearchBackendTestSupport {
38 protected final SmoSearchBackend backend;
39
40 public SmoSearchBackendTestSupport(SmoSearchBackend backend) {
41 this.backend = backend;
42 }
43
44 protected void dumpSingle(AtomicInteger counter, List<Record> page) {
45 for (Record record : page) {
46 StringBuilder sb = new StringBuilder();
47 sb.append(record.getValue(MAVEN.GROUP_ID))
48 .append(":")
49 .append(record.getValue(MAVEN.ARTIFACT_ID))
50 .append(":")
51 .append(record.getValue(MAVEN.VERSION));
52 if (record.hasField(MAVEN.PACKAGING)) {
53 if (record.hasField(MAVEN.CLASSIFIER)) {
54 sb.append(":").append(record.getValue(MAVEN.CLASSIFIER));
55 }
56 sb.append(":").append(record.getValue(MAVEN.PACKAGING));
57 }
58
59 List<String> remarks = new ArrayList<>();
60 if (record.getLastUpdated() != null) {
61 remarks.add("lastUpdate=" + Instant.ofEpochMilli(record.getLastUpdated()));
62 }
63 if (record.hasField(MAVEN.VERSION_COUNT)) {
64 remarks.add("versionCount=" + record.getValue(MAVEN.VERSION_COUNT));
65 }
66 if (record.hasField(MAVEN.HAS_SOURCE)) {
67 remarks.add("hasSource=" + record.getValue(MAVEN.HAS_SOURCE));
68 }
69 if (record.hasField(MAVEN.HAS_JAVADOC)) {
70 remarks.add("hasJavadoc=" + record.getValue(MAVEN.HAS_JAVADOC));
71 }
72
73 System.out.print(counter.incrementAndGet() + ". " + sb);
74 if (!remarks.isEmpty()) {
75 System.out.print(" " + remarks);
76 }
77 System.out.println();
78 }
79 }
80
81 protected void dumpPage(SmoSearchResponse searchResponse) throws IOException {
82 AtomicInteger counter = new AtomicInteger(0);
83 System.out.println(
84 "QUERY: " + searchResponse.getSearchRequest().getQuery().toString());
85 System.out.println("URL: " + searchResponse.getSearchUri());
86 dumpSingle(counter, searchResponse.getPage());
87 while (searchResponse.getTotalHits() > searchResponse.getCurrentHits()) {
88 System.out.println("NEXT PAGE (size "
89 + searchResponse.getSearchRequest().getPaging().getPageSize() + ")");
90 searchResponse = backend.search(searchResponse.getSearchRequest().nextPage());
91 dumpSingle(counter, searchResponse.getPage());
92 if (counter.get() > 50) {
93 System.out.println("ABORTED TO NOT SPAM");
94 break;
95 }
96 }
97 System.out.println();
98 }
99
100 @Test
101 public void smoke() throws IOException {
102 SearchRequest searchRequest = new SearchRequest(Query.query("smoke"));
103 SmoSearchResponse searchResponse = backend.search(searchRequest);
104 System.out.println("TOTAL HITS: " + searchResponse.getTotalHits());
105 dumpPage(searchResponse);
106 }
107
108 @Test
109 public void g() throws IOException {
110 SearchRequest searchRequest =
111 new SearchRequest(FieldQuery.fieldQuery(MAVEN.GROUP_ID, "org.apache.maven.plugins"));
112 SmoSearchResponse searchResponse = backend.search(searchRequest);
113 System.out.println("TOTAL HITS: " + searchResponse.getTotalHits());
114 dumpPage(searchResponse);
115 }
116
117 @Test
118 public void ga() throws IOException {
119 SearchRequest searchRequest = new SearchRequest(BooleanQuery.and(
120 FieldQuery.fieldQuery(MAVEN.GROUP_ID, "org.apache.maven.plugins"),
121 FieldQuery.fieldQuery(MAVEN.ARTIFACT_ID, "maven-clean-plugin")));
122 SmoSearchResponse searchResponse = backend.search(searchRequest);
123 System.out.println("TOTAL HITS: " + searchResponse.getTotalHits());
124 dumpPage(searchResponse);
125 }
126
127 @Test
128 public void gav() throws IOException {
129 SearchRequest searchRequest = new SearchRequest(BooleanQuery.and(
130 FieldQuery.fieldQuery(MAVEN.GROUP_ID, "org.apache.maven.plugins"),
131 FieldQuery.fieldQuery(MAVEN.ARTIFACT_ID, "maven-clean-plugin"),
132 FieldQuery.fieldQuery(MAVEN.VERSION, "3.1.0")));
133 SmoSearchResponse searchResponse = backend.search(searchRequest);
134 System.out.println("TOTAL HITS: " + searchResponse.getTotalHits());
135 dumpPage(searchResponse);
136 }
137
138 @Test
139 public void sha1() throws IOException {
140 SearchRequest searchRequest =
141 new SearchRequest(FieldQuery.fieldQuery(MAVEN.SHA1, "8ac9e16d933b6fb43bc7f576336b8f4d7eb5ba12"));
142 SmoSearchResponse searchResponse = backend.search(searchRequest);
143 System.out.println("TOTAL HITS: " + searchResponse.getTotalHits());
144 dumpPage(searchResponse);
145 }
146
147 @Test
148 public void cn() throws IOException {
149 SearchRequest searchRequest =
150 new SearchRequest(FieldQuery.fieldQuery(MAVEN.CLASS_NAME, "MavenRepositorySystem"));
151 SmoSearchResponse searchResponse = backend.search(searchRequest);
152 System.out.println("TOTAL HITS: " + searchResponse.getTotalHits());
153 dumpPage(searchResponse);
154 }
155
156 @Test
157 public void fqcn() throws IOException {
158 SearchRequest searchRequest = new SearchRequest(
159 FieldQuery.fieldQuery(MAVEN.FQ_CLASS_NAME, "org.apache.maven.bridge.MavenRepositorySystem"));
160 SmoSearchResponse searchResponse = backend.search(searchRequest);
161 System.out.println("TOTAL HITS: " + searchResponse.getTotalHits());
162 dumpPage(searchResponse);
163 }
164 }