26 March 2007: Wouter
- config settings for slab hash message cache.
+ - test for cached answer.
+ - Fixup deleting fake answer from testbound list.
23 March 2007: Wouter
- review of yesterday's commits.
answer_check_it(struct replay_runtime* runtime)
{
struct replay_answer* ans = runtime->answer_list,
- **prev = &runtime->answer_list;
+ *prev = NULL;
log_assert(runtime && runtime->now &&
runtime->now->evt_type == repevt_front_reply);
while(ans) {
log_info("testbound: do STEP %d %s",
runtime->now->time_step,
repevt_string(runtime->now->evt_type));
- *prev = ans->next;
+ if(prev)
+ prev->next = ans->next;
+ else runtime->answer_list = ans->next;
+ if(!ans->next)
+ runtime->answer_last = prev;
delete_replay_answer(ans);
ans = n;
return;
} else {
- prev = &ans->next;
+ prev = ans;
ans = ans->next;
}
}
--- /dev/null
+; This is a comment.
+
+SCENARIO_BEGIN Query receives answer from the cache
+
+STEP 1 QUERY
+ENTRY_BEGIN
+ SECTION QUESTION
+ www.example.com. IN A
+ENTRY_END
+; the query is sent to the forwarder - no cache yet.
+STEP 2 CHECK_OUT_QUERY
+ENTRY_BEGIN
+ MATCH qname qtype opcode
+ SECTION QUESTION
+ www.example.com. IN A
+ENTRY_END
+STEP 3 REPLY
+ENTRY_BEGIN
+ MATCH opcode qtype qname
+ ADJUST copy_id
+ REPLY QR RD RA NOERROR
+ SECTION QUESTION
+ www.example.com. IN A
+ SECTION ANSWER
+ www.example.com. IN A 10.20.30.40
+ SECTION AUTHORITY
+ www.example.com. IN NS ns.example.com.
+ SECTION ADDITIONAL
+ ns.example.com. IN A 10.20.30.50
+ENTRY_END
+STEP 4 CHECK_ANSWER
+ENTRY_BEGIN
+ MATCH opcode qname qtype
+ SECTION QUESTION
+ www.example.com. IN A
+ SECTION ANSWER
+ www.example.com. IN A 10.20.30.40
+ENTRY_END
+
+; another query, same, so it must be answered frm the cache
+STEP 5 QUERY
+ENTRY_BEGIN
+ SECTION QUESTION
+ www.example.com. IN A
+ENTRY_END
+; immediate answer without an OUT_QUERY happening (checked on exit)
+STEP 6 CHECK_ANSWER
+ENTRY_BEGIN
+ MATCH opcode qname qtype
+ SECTION QUESTION
+ www.example.com. IN A
+ SECTION ANSWER
+ www.example.com. IN A 10.20.30.40
+ENTRY_END
+
+SCENARIO_END