diff --git a/loop/port_monitor_test.go b/loop/port_monitor_test.go
index 8f474e0..a1dad57 100644
--- a/loop/port_monitor_test.go
+++ b/loop/port_monitor_test.go
@@ -3,6 +3,7 @@
 import (
 	"context"
 	"testing"
+	"time"
 )
 
 // TestPortMonitoring tests the port monitoring functionality
@@ -131,3 +132,74 @@
 		})
 	}
 }
+
+// TestPortEventStorage tests the new event storage functionality
+func TestPortEventStorage(t *testing.T) {
+	pm := NewPortMonitor()
+
+	// Initially should have no events
+	allEvents := pm.GetAllRecentEvents()
+	if len(allEvents) != 0 {
+		t.Errorf("Expected 0 events initially, got %d", len(allEvents))
+	}
+
+	// Simulate port changes that would add events
+	ctx := context.Background()
+	oldPorts := "Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port\ntcp   LISTEN 0      128    0.0.0.0:8080         0.0.0.0:*"
+	newPorts := "Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port\ntcp   LISTEN 0      128    0.0.0.0:9090         0.0.0.0:*"
+
+	pm.logPortDifferences(ctx, oldPorts, newPorts)
+
+	// Should now have events
+	allEvents = pm.GetAllRecentEvents()
+	if len(allEvents) != 2 {
+		t.Errorf("Expected 2 events (1 opened, 1 closed), got %d", len(allEvents))
+	}
+
+	// Check event types
+	foundOpened := false
+	foundClosed := false
+	for _, event := range allEvents {
+		if event.Type == "opened" && event.Port == "tcp:0.0.0.0:9090" {
+			foundOpened = true
+		}
+		if event.Type == "closed" && event.Port == "tcp:0.0.0.0:8080" {
+			foundClosed = true
+		}
+	}
+
+	if !foundOpened {
+		t.Error("Expected to find 'opened' event for port tcp:0.0.0.0:9090")
+	}
+	if !foundClosed {
+		t.Error("Expected to find 'closed' event for port tcp:0.0.0.0:8080")
+	}
+}
+
+// TestPortEventFiltering tests the time-based filtering
+func TestPortEventFiltering(t *testing.T) {
+	pm := NewPortMonitor()
+	ctx := context.Background()
+
+	// Record time before adding events
+	beforeTime := time.Now()
+	time.Sleep(1 * time.Millisecond) // Small delay to ensure timestamp difference
+
+	// Add some events
+	oldPorts := "Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port\ntcp   LISTEN 0      128    0.0.0.0:8080         0.0.0.0:*"
+	newPorts := "Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port\ntcp   LISTEN 0      128    0.0.0.0:9090         0.0.0.0:*"
+	pm.logPortDifferences(ctx, oldPorts, newPorts)
+
+	// Get events since beforeTime - should get all events
+	recentEvents := pm.GetRecentEvents(beforeTime)
+	if len(recentEvents) != 2 {
+		t.Errorf("Expected 2 recent events, got %d", len(recentEvents))
+	}
+
+	// Get events since now - should get no events
+	nowTime := time.Now()
+	recentEvents = pm.GetRecentEvents(nowTime)
+	if len(recentEvents) != 0 {
+		t.Errorf("Expected 0 recent events since now, got %d", len(recentEvents))
+	}
+}
