summaryrefslogtreecommitdiff
path: root/src/main/java/testing/examples/InteractiveTest.java
blob: 8cc93e86477c2c92958869704904f1d1a0d6deed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package testing.examples;

import testing.*;
import java.util.Scanner;

public class InteractiveTest {
    public static void main(String[] args) throws Exception {
        Scanner scanner = new Scanner(System.in);
        HeadlessSimulationRunner runner = new HeadlessSimulationRunner();
        
        System.out.println("=== Interactive Headless Test ===");
        System.out.println("\nAvailable simulations:");
        System.out.println("1. ping-pong.dat");
        System.out.println("2. broadcast.dat");
        System.out.println("3. berkeley.dat");
        System.out.println("4. raft-working.dat");
        
        System.out.print("\nEnter simulation filename (or full path): ");
        String filename = scanner.nextLine();
        
        // Add saved-simulations/ prefix if not present
        if (!filename.contains("/")) {
            filename = "saved-simulations/" + filename;
        }
        
        System.out.print("Run duration in ms (default 2000): ");
        String durationStr = scanner.nextLine();
        long duration = durationStr.isEmpty() ? 2000 : Long.parseLong(durationStr);
        
        System.out.print("Pattern to search for (optional): ");
        String pattern = scanner.nextLine();
        
        try {
            System.out.println("\nRunning simulation...");
            SimulationResult result = runner.runSimulation(filename, duration);
            
            System.out.println("\nResults:");
            System.out.println("- Total logs: " + result.getAllLogs().size());
            System.out.println("- Processes: " + result.getMetrics().getNumProcesses());
            
            if (!pattern.isEmpty()) {
                int count = result.countLogs(pattern);
                System.out.println("- Pattern '" + pattern + "' found: " + count + " times");
                
                if (count > 0) {
                    System.out.println("\nMatching logs:");
                    result.findAll(pattern).stream()
                        .limit(5)
                        .forEach(log -> System.out.println("  " + log));
                }
            }
            
            System.out.println("\nFirst 10 logs:");
            result.getAllLogs().stream()
                .limit(10)
                .forEach(log -> System.out.println("  [" + log.getTimestamp() + "] " + 
                                                  log.getMessage()));
                                                  
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
        } finally {
            runner.shutdown();
            scanner.close();
        }
    }
}