Добавлено несколько тестов на оптимизацию

This commit is contained in:
serega6531
2020-02-11 22:20:28 +03:00
parent 5d4ab29f98
commit bbee141c32
3 changed files with 71 additions and 4 deletions

View File

@@ -34,4 +34,5 @@ dependencies {
runtimeOnly 'org.springframework.boot:spring-boot-devtools' runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'org.postgresql:postgresql' runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok'
testCompile 'org.junit.jupiter:junit-jupiter:5.4.2'
} }

View File

@@ -21,7 +21,7 @@ import java.util.zip.ZipException;
@AllArgsConstructor @AllArgsConstructor
@Slf4j @Slf4j
class StreamOptimizer { public class StreamOptimizer {
private final CtfService service; private final CtfService service;
private final List<Packet> packets; private final List<Packet> packets;
@@ -31,7 +31,7 @@ class StreamOptimizer {
/** /**
* Вызвать для выполнения оптимизаций на переданном списке пакетов. * Вызвать для выполнения оптимизаций на переданном списке пакетов.
*/ */
void optimizeStream() { public void optimizeStream() {
if (service.isUngzipHttp()) { if (service.isUngzipHttp()) {
unpackGzip(); unpackGzip();
} }
@@ -60,7 +60,7 @@ class StreamOptimizer {
if (packetsInRow > 1) { if (packetsInRow > 1) {
compress(start, i); compress(start, i);
i++; // продвигаем указатель на следующий после склеенного блок i++; // продвигаем указатель на следующий после склеенного блок TODO проверить работу этого
} }
start = i; start = i;
packetsInRow = 1; packetsInRow = 1;
@@ -109,7 +109,7 @@ class StreamOptimizer {
for (Packet packet : packets) { for (Packet packet : packets) {
if (packet.isIncoming()) { if (packet.isIncoming()) {
String content = new String(packet.getContent()); String content = new String(packet.getContent());
if (content.startsWith("HTTP/")) { if (content.contains("HTTP/")) {
httpStarted = true; httpStarted = true;
} }

View File

@@ -0,0 +1,66 @@
package ru.serega6531.packmate;
import org.junit.jupiter.api.Test;
import ru.serega6531.packmate.model.CtfService;
import ru.serega6531.packmate.model.Packet;
import ru.serega6531.packmate.service.StreamOptimizer;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
class StreamOptimizerTest {
@Test
public void testUrldecodeRequests() {
CtfService service = new CtfService();
service.setUrldecodeHttpRequests(true);
Packet p = createPacket("GET /?q=%D0%B0+%D0%B1 HTTP/1.1\r\n\r\n".getBytes(), true);
List<Packet> list = new ArrayList<>();
list.add(p);
new StreamOptimizer(service, list).optimizeStream();
final String processed = new String(list.get(0).getContent());
assertTrue(processed.contains("а б"));
}
@Test
public void testMergeAdjacentPackets() {
CtfService service = new CtfService();
service.setMergeAdjacentPackets(true);
Packet p1 = createPacket(1, false);
Packet p2 = createPacket(2, true);
Packet p3 = createPacket(3, true);
Packet p4 = createPacket(4, false);
Packet p5 = createPacket(5, true);
Packet p6 = createPacket(6, true);
List<Packet> list = new ArrayList<>();
list.add(p1);
list.add(p2);
list.add(p3);
list.add(p4);
list.add(p5);
list.add(p6);
new StreamOptimizer(service, list).optimizeStream();
assertEquals(4, list.size());
//TODO
}
private Packet createPacket(int content, boolean incoming) {
return createPacket(new byte[] {(byte) content}, incoming);
}
private Packet createPacket(byte[] content, boolean incoming) {
Packet p = new Packet();
p.setContent(content);
p.setIncoming(incoming);
return p;
}
}