Skip to content

Testing & Debugging

Unit Testing

Testing Memory Components

Testing Memory Query Strategies

@ExtendWith(MockitoExtension.class)
class StepVectorQueryStrategyTest {
    @Mock
    private StepContext stepContext;

    @BeforeEach
    void setUp() {
        strategy = new StepVectorQueryStrategy();
    }

    @Test
    void testGetMemoryQueryReturnsValidQuery() {
        MemoryQuery query = strategy.getMemoryQuery(stepContext);
        assertNotNull(query);
        assertNotNull(query.getExpression());
    }

    @Test
    void testAcceptsStepContext() {
        assertTrue(strategy.accepts(stepContext));
        assertFalse(strategy.accepts(mock(ProcessContext.class)));
    }
}

Testing Memory Summarization

@ExtendWith(MockitoExtension.class)
class MemorySummarizerProcessorTest {
    @Mock
    private AgentContext agentContext;
    @Mock
    private MemoryManager memoryManager;
    @Mock
    private ModelCallService modelCallService;

    @BeforeEach
    void setUp() {
        processor = new MemorySummarizerProcessor(modelCallService);
        when(agentContext.getMemoryManager()).thenReturn(memoryManager);
    }

    @Test
    void testDoProcessQueriesMemoryAndStoresMessages() {
        List<Message> memoryMessages = List.of(message1, message2);
        when(memoryManager.query(any(MemoryQuery.class))).thenReturn(memoryMessages);

        processor.process(agentContext);

        verify(memoryManager).query(any(MemoryQuery.class));
        verify(memoryManager).storeAll(anyList(), eq(MemorySubsystem.EPISODIC));
        verify(memoryManager).storeAll(anyList(), eq(MemorySubsystem.VECTOR));
    }
}

Testing Memory Persistence

@Test
void testPostgresPersistence() {
    PersistenceStrategy strategy = new PostgresPersistenceStrategy(dataSource);
    Message message = createTestMessage();

    strategy.store(message);
    Message retrieved = strategy.retrieve(message.getId());

    assertEquals(message.getId(), retrieved.getId());
    assertEquals(message.getContent(), retrieved.getContent());
}

Integration Testing

Testing Memory Chain

@Test
void testMemoryChain() {
    MemoryManager manager = new MemoryManager(memories, queryStrategies);
    Message message = createTestMessage();

    manager.store(MemorySubsystem.EPISODIC, message);
    Message retrieved = manager.retrieve(message.getId());

    assertNotNull(retrieved);
    assertEquals(message.getId(), retrieved.getId());
}

Debugging Memory Issues

  1. Memory Query Issues:
  2. Check query expressions
  3. Verify memory subsystem configuration
  4. Inspect query strategy selection

  5. Summarization Issues:

  6. Verify model call configuration
  7. Check input message limits
  8. Inspect summary storage

  9. Persistence Issues:

  10. Check database connectivity
  11. Verify schema configuration
  12. Inspect transaction handling