1+ package com .redis .om .spring .ops ;
2+
3+ import org .springframework .boot .test .context .TestComponent ;
4+ import org .springframework .context .annotation .Primary ;
5+ import org .springframework .stereotype .Component ;
6+ import redis .clients .jedis .search .FTCreateParams ;
7+ import redis .clients .jedis .search .FTSearchParams ;
8+ import redis .clients .jedis .search .IndexOptions ;
9+ import redis .clients .jedis .search .Query ;
10+ import redis .clients .jedis .search .Schema ;
11+ import redis .clients .jedis .search .SearchResult ;
12+ import redis .clients .jedis .search .aggr .AggregationBuilder ;
13+ import redis .clients .jedis .search .schemafields .SchemaField ;
14+
15+ import java .util .List ;
16+ import java .util .Map ;
17+ import java .util .concurrent .atomic .AtomicInteger ;
18+
19+ /**
20+ * Test implementation of CommandListener that tracks all invocations
21+ */
22+ @ Component
23+ @ Primary
24+ class TestCommandListener implements CommandListener {
25+ // Search tracking
26+ AtomicInteger searchStartedCount = new AtomicInteger (0 );
27+ AtomicInteger searchFinishedCount = new AtomicInteger (0 );
28+ String lastSearchIndexName ;
29+ Query lastSearchQuery ;
30+ FTSearchParams lastSearchParams ;
31+ SearchResult lastSearchResult ;
32+
33+ // Create index tracking
34+ AtomicInteger createIndexStartedCount = new AtomicInteger (0 );
35+ AtomicInteger createIndexFinishedCount = new AtomicInteger (0 );
36+ String lastCreateIndexName ;
37+ FTCreateParams lastCreateParams ;
38+ List <SchemaField > lastCreateFields ;
39+ Schema lastCreateSchema ;
40+ IndexOptions lastCreateOptions ;
41+ String lastCreateResult ;
42+
43+ // Aggregate tracking
44+ AtomicInteger aggregateStartedCount = new AtomicInteger (0 );
45+ AtomicInteger aggregateFinishedCount = new AtomicInteger (0 );
46+ String lastAggregateIndexName ;
47+ AggregationBuilder lastAggregationBuilder ;
48+
49+ // Drop index tracking
50+ AtomicInteger dropIndexStartedCount = new AtomicInteger (0 );
51+ AtomicInteger dropIndexFinishedCount = new AtomicInteger (0 );
52+ String lastDropIndexName ;
53+ String lastDropIndexResult ;
54+
55+ // Info tracking
56+ AtomicInteger infoStartedCount = new AtomicInteger (0 );
57+ AtomicInteger infoFinishedCount = new AtomicInteger (0 );
58+
59+ @ Override
60+ public void searchStarted (String indexName , Query q , FTSearchParams params ) {
61+ searchStartedCount .incrementAndGet ();
62+ lastSearchIndexName = indexName ;
63+ lastSearchQuery = q ;
64+ lastSearchParams = params ;
65+ }
66+
67+ @ Override
68+ public void searchFinished (String indexName , Query q , FTSearchParams params , SearchResult searchResult ) {
69+ searchFinishedCount .incrementAndGet ();
70+ lastSearchResult = searchResult ;
71+ }
72+
73+ @ Override
74+ public void createIndexStarted (String indexName , FTCreateParams params , List <SchemaField > fields ,
75+ Schema schema , IndexOptions options ) {
76+ createIndexStartedCount .incrementAndGet ();
77+ lastCreateIndexName = indexName ;
78+ lastCreateParams = params ;
79+ lastCreateFields = fields ;
80+ lastCreateSchema = schema ;
81+ lastCreateOptions = options ;
82+ }
83+
84+ @ Override
85+ public void createIndexFinished (String indexName , FTCreateParams params , List <SchemaField > fields ,
86+ Schema schema , IndexOptions options , String result ) {
87+ createIndexFinishedCount .incrementAndGet ();
88+ lastCreateResult = result ;
89+ }
90+
91+ @ Override
92+ public void aggregateStarted (String indexName , AggregationBuilder q ) {
93+ aggregateStartedCount .incrementAndGet ();
94+ lastAggregateIndexName = indexName ;
95+ lastAggregationBuilder = q ;
96+ }
97+
98+ @ Override
99+ public void aggregateFinished (String indexName , AggregationBuilder q ) {
100+ aggregateFinishedCount .incrementAndGet ();
101+ }
102+
103+ @ Override
104+ public void dropIndexStarted (String indexName ) {
105+ dropIndexStartedCount .incrementAndGet ();
106+ lastDropIndexName = indexName ;
107+ }
108+
109+ @ Override
110+ public void dropIndexFinished (String indexName , String result ) {
111+ dropIndexFinishedCount .incrementAndGet ();
112+ lastDropIndexResult = result ;
113+ }
114+
115+ @ Override
116+ public void infoStarted (String indexName ) {
117+ infoStartedCount .incrementAndGet ();
118+ }
119+
120+ @ Override
121+ public void infoFinished (String indexName , Map <String , Object > info ) {
122+ infoFinishedCount .incrementAndGet ();
123+ }
124+
125+ /**
126+ * Reset all counters and tracked values
127+ */
128+ void reset () {
129+ searchStartedCount .set (0 );
130+ searchFinishedCount .set (0 );
131+ createIndexStartedCount .set (0 );
132+ createIndexFinishedCount .set (0 );
133+ aggregateStartedCount .set (0 );
134+ aggregateFinishedCount .set (0 );
135+ dropIndexStartedCount .set (0 );
136+ dropIndexFinishedCount .set (0 );
137+ infoStartedCount .set (0 );
138+ infoFinishedCount .set (0 );
139+ lastSearchIndexName = null ;
140+ lastSearchQuery = null ;
141+ lastSearchParams = null ;
142+ lastSearchResult = null ;
143+ lastCreateIndexName = null ;
144+ lastCreateParams = null ;
145+ lastCreateFields = null ;
146+ lastCreateSchema = null ;
147+ lastCreateOptions = null ;
148+ lastCreateResult = null ;
149+ lastAggregateIndexName = null ;
150+ lastAggregationBuilder = null ;
151+ lastDropIndexName = null ;
152+ lastDropIndexResult = null ;
153+ }
154+ }
0 commit comments