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