55
66package org .opensearch .sql .opensearch .planner .physical ;
77
8- import com .google .common .collect .ImmutableMap ;
98import org .apache .commons .lang3 .tuple .ImmutablePair ;
109import org .apache .commons .lang3 .tuple .Pair ;
1110import org .junit .jupiter .api .Test ;
1211import org .junit .jupiter .api .extension .ExtendWith ;
1312import org .junit .runner .RunWith ;
1413import org .mockito .Answers ;
1514import org .mockito .Mock ;
16- import org .mockito .MockedStatic ;
17- import org .mockito .Mockito ;
1815import org .mockito .junit .MockitoJUnitRunner ;
1916import org .mockito .junit .jupiter .MockitoExtension ;
2017import org .mockito .junit .jupiter .MockitoSettings ;
2118import org .mockito .quality .Strictness ;
22- import org .opensearch .action .support .PlainActionFuture ;
2319import org .opensearch .client .node .NodeClient ;
24- import org .opensearch .ml .client .MachineLearningNodeClient ;
25- import org .opensearch .ml .common .dataframe .DataFrame ;
26- import org .opensearch .ml .common .dataframe .DataFrameBuilder ;
27- import org .opensearch .ml .common .input .MLInput ;
28- import org .opensearch .ml .common .output .MLOutput ;
29- import org .opensearch .ml .common .output .MLPredictionOutput ;
30- import org .opensearch .ml .common .output .MLTrainingOutput ;
31- import org .opensearch .sql .ast .dsl .AstDSL ;
32- import org .opensearch .sql .ast .expression .Literal ;
33- import org .opensearch .sql .data .model .ExprIntegerValue ;
3420import org .opensearch .sql .data .model .ExprNullValue ;
35- import org .opensearch .sql .data .model .ExprTupleValue ;
36- import org .opensearch .sql .data .model .ExprValue ;
21+ import org .opensearch .sql .data .type .ExprCoreType ;
3722import org .opensearch .sql .expression .Expression ;
3823import org .opensearch .sql .expression .LiteralExpression ;
24+ import org .opensearch .sql .expression .NamedExpression ;
3925import org .opensearch .sql .expression .ReferenceExpression ;
40- import org .opensearch .sql .opensearch .client .MLClient ;
4126import org .opensearch .sql .opensearch .data .type .OpenSearchTextType ;
27+ import org .opensearch .sql .opensearch .data .value .OpenSearchExprTextValue ;
28+ import org .opensearch .sql .opensearch .executor .protector .OpenSearchExecutionProtector ;
29+ import org .opensearch .sql .planner .physical .EvalOperator ;
4230import org .opensearch .sql .planner .physical .PhysicalPlan ;
4331import org .opensearch .sql .planner .physical .PhysicalPlanNodeVisitor ;
32+ import org .opensearch .sql .planner .physical .ProjectOperator ;
4433
4534import java .util .Collections ;
46- import java .util .HashMap ;
4735import java .util .List ;
48- import java .util .Map ;
49- import java .util .concurrent .TimeUnit ;
5036
5137import static org .junit .jupiter .api .Assertions .assertFalse ;
5238import static org .junit .jupiter .api .Assertions .assertNotNull ;
5339import static org .junit .jupiter .api .Assertions .assertNull ;
5440import static org .junit .jupiter .api .Assertions .assertTrue ;
5541import static org .mockito .ArgumentMatchers .any ;
56- import static org .mockito .ArgumentMatchers .anyLong ;
5742import static org .mockito .ArgumentMatchers .eq ;
58- import static org .mockito .Mockito .when ;
59- import static org .opensearch .sql .utils .MLCommonsConstants .ACTION ;
60- import static org .opensearch .sql .utils .MLCommonsConstants .ALGO ;
61- import static org .opensearch .sql .utils .MLCommonsConstants .KMEANS ;
62- import static org .opensearch .sql .utils .MLCommonsConstants .PREDICT ;
63- import static org .opensearch .sql .utils .MLCommonsConstants .TRAIN ;
6443
6544/**
6645 * To assert the original bahviour of eval operator.
@@ -84,4 +63,26 @@ public void testOpenSearchEvalAccept() {
8463 OpenSearchEvalOperator evalOperator = new OpenSearchEvalOperator (input , ipAddress , nodeClient );
8564 assertNull (evalOperator .accept (physicalPlanNodeVisitor , null ));
8665 }
66+
67+ // Test-case: Make sure the original eval works
68+ // Test-case: Make sure geoIpClient being called and assert the same mocked value being returned.
69+
70+ // To have some expression like a+2 == c to make sure the original eval behaviour stay.
71+ @ Test
72+ public void testEvalOperatorOnGenericOperations () {
73+
74+ ProjectOperator projectOperator = new ProjectOperator (input ,
75+ List .of (
76+ new NamedExpression ("firstname" , new ReferenceExpression ("firstname" , List .of ("firstname" ), OpenSearchTextType .of ())),
77+ new NamedExpression ("age" , new ReferenceExpression ("age" , List .of ("age" ), ExprCoreType .LONG )),
78+ new NamedExpression ("firstname" , new ReferenceExpression ("email" , List .of ("email" ), OpenSearchTextType .of ()))),
79+ Collections .emptyList ());
80+
81+ List <Pair <ReferenceExpression , Expression >> ipAddress = List .of (ImmutablePair .of (
82+ new ReferenceExpression ("ipAddress" , OpenSearchTextType .of ()),
83+ new LiteralExpression (ExprNullValue .of ())));
84+ OpenSearchEvalOperator evalOperator = new OpenSearchEvalOperator (projectOperator , ipAddress , nodeClient );
85+ assertNull (evalOperator .next ());
86+
87+ }
8788}
0 commit comments