TEST_F(TestIronBeeModuleRulesLua, operator_test) { const ib_operator_t *op; void *instance_data; ib_num_t result; ib_field_t* field1; const char* op_name = "test_module_rules_lua.lua"; const char* rule_name = "luarule001"; char* str1 = (char *)ib_mpool_strdup(ib_engine->mp, "string 1"); ASSERT_TRUE(str1); // Create field 1. ASSERT_EQ(IB_OK, ib_field_create( &field1, ib_engine->mp, IB_FIELD_NAME("field1"), IB_FTYPE_NULSTR, ib_ftype_nulstr_in(str1) ) ); /* Configure the operator. */ configureIronBee(); // Ensure that the operator exists. ASSERT_EQ(IB_OK, ib_operator_lookup(ib_engine, op_name, &op) ); ASSERT_EQ(IB_OK, ib_operator_inst_create(op, ib_context_main(ib_engine), IB_OP_CAPABILITY_NON_STREAM, rule_name, &instance_data)); performTx(); // Attempt to match. ASSERT_EQ(IB_OK, ib_operator_inst_execute(op, instance_data, ib_tx, field1, NULL, &result)); // This time we should succeed. ASSERT_TRUE(result); }
virtual void SetUp() { BaseFixture::SetUp(); configureIronBee(); ib_conn = buildIronBeeConnection(); // Create the transaction. sendDataIn(ib_conn, "GET / HTTP/1.1\r\n" "Host: UnitTest\r\n" "X-MyHeader: header1\r\n" "X-MyHeader: header2\r\n" "\r\n"); sendDataOut(ib_conn, "HTTP/1.1 200 OK\r\n" "Content-Type: text/html\r\n" "X-MyHeader: header3\r\n" "X-MyHeader: header4\r\n" "\r\n"); ib_tx = ib_conn->tx; }
void SetUp() { BaseFixture::SetUp(); configureIronBee(); performTx(); }
virtual void SetUp() { ib_status_t rc; const char *s1 = "string 1"; const char *s2 = "string 2"; BaseTransactionFixture::SetUp(); configureIronBee(); performTx(); ib_mm_t mm = ib_engine_mm_main_get(ib_engine); char* str1 = (char *)ib_mm_alloc(mm, (strlen(s1)+1)); if (str1 == NULL) { throw std::runtime_error("Could not allocate string 1."); } strcpy(str1, s1); char* str2 = (char *)ib_mm_alloc(mm, (strlen(s2)+1)); if (str1 == NULL) { throw std::runtime_error("Could not allocate string 2."); } strcpy(str2, s2); // Create field 1. rc = ib_field_create(&field1, mm, IB_S2SL("field1"), IB_FTYPE_NULSTR, ib_ftype_nulstr_in(str1)); if (rc != IB_OK) { throw std::runtime_error("Could not initialize field1."); } // Create field 2. rc = ib_field_create(&field2, mm, IB_S2SL("field2"), IB_FTYPE_NULSTR, ib_ftype_nulstr_in(str2)); if (rc != IB_OK) { throw std::runtime_error("Could not initialize field2."); } /* Create rule 1 */ rc = ib_rule_create(ib_engine, ib_context_engine(ib_engine), __FILE__, __LINE__, true, &rule1); if (rc != IB_OK) { throw std::runtime_error("Could not create rule1."); } rc = ib_rule_set_id(ib_engine, rule1, "rule1"); if (rc != IB_OK) { throw std::runtime_error("Could not set ID for rule1."); } /* Create the rule execution object #1 */ memset(&rule_exec1, 0, sizeof(rule_exec1)); rule_exec1.ib = ib_engine; rule_exec1.tx = ib_tx; rule_exec1.rule = rule1; /* Create rule 2 */ rc = (ib_rule_create(ib_engine, ib_context_engine(ib_engine), __FILE__, __LINE__, true, &rule2)); if (rc != IB_OK) { throw std::runtime_error("Could not create rule2."); } rc = ib_rule_set_id(ib_engine, rule2, "rule2"); if (rc != IB_OK) { throw std::runtime_error("Could not set ID for rule2."); } rule2->flags |= IB_RULE_FLAG_CAPTURE; /* Create the rule execution object #1 */ memset(&rule_exec2, 0, sizeof(rule_exec2)); rule_exec2.ib = ib_engine; rule_exec2.tx = ib_tx; rule_exec2.rule = rule2; }