Example #1
0
static void
test_replaycache_hit(void *arg)
{
  replaycache_t *r = NULL;
  int result;

  (void)arg;
  r = replaycache_new(600, 300);
  tt_assert(r != NULL);

  result =
    replaycache_add_and_test_internal(1200, r, test_buffer,
        strlen(test_buffer), NULL);
  tt_int_op(result,OP_EQ, 0);

  result =
    replaycache_add_and_test_internal(1300, r, test_buffer,
        strlen(test_buffer), NULL);
  tt_int_op(result,OP_EQ, 1);

 done:
  if (r) replaycache_free(r);

  return;
}
Example #2
0
static void
test_replaycache_age(void)
{
  replaycache_t *r = NULL;
  int result;

  r = replaycache_new(600, 300);
  test_assert(r != NULL);

  result =
    replaycache_add_and_test_internal(1200, r, test_buffer,
        (int)strlen(test_buffer), NULL);
  test_eq(result, 0);

  result =
    replaycache_add_and_test_internal(1300, r, test_buffer,
        (int)strlen(test_buffer), NULL);
  test_eq(result, 1);

  result =
    replaycache_add_and_test_internal(3000, r, test_buffer,
        (int)strlen(test_buffer), NULL);
  test_eq(result, 0);

 done:
  if (r) replaycache_free(r);

  return;
}
Example #3
0
static void
test_replaycache_miss(void *arg)
{
  replaycache_t *r = NULL;
  int result;

  (void)arg;
  r = replaycache_new(600, 300);
  tt_assert(r != NULL);

  result =
    replaycache_add_and_test_internal(1200, r, test_buffer,
        strlen(test_buffer), NULL);
  tt_int_op(result,OP_EQ, 0);

  /* poke the bad-parameter error case too */
  result =
    replaycache_add_and_test_internal(1200, NULL, test_buffer,
        strlen(test_buffer), NULL);
  tt_int_op(result,OP_EQ, 0);

 done:
  if (r) replaycache_free(r);

  return;
}
Example #4
0
static void
test_replaycache_elapsed(void)
{
  replaycache_t *r = NULL;
  int result;
  time_t elapsed;

  r = replaycache_new(600, 300);
  test_assert(r != NULL);
  if (!r) goto done;

  result =
    replaycache_add_and_test_internal(1200, r, test_buffer,
        (int)strlen(test_buffer), NULL);
  test_eq(result, 0);

  result =
    replaycache_add_and_test_internal(1300, r, test_buffer,
        (int)strlen(test_buffer), &elapsed);
  test_eq(result, 1);
  test_eq(elapsed, 100);

 done:
  if (r) replaycache_free(r);

  return;
}
Example #5
0
static void
test_replaycache_future(void *arg)
{
  replaycache_t *r = NULL;
  int result;
  time_t elapsed = 0;

  (void)arg;
  r = replaycache_new(600, 300);
  tt_assert(r != NULL);

  /* Set up like in test_replaycache_hit() */
  result =
    replaycache_add_and_test_internal(100, r, test_buffer,
        strlen(test_buffer), &elapsed);
  tt_int_op(result,OP_EQ, 0);
  /* elapsed should still be 0, since it wasn't written */
  tt_int_op(elapsed,OP_EQ, 0);

  result =
    replaycache_add_and_test_internal(200, r, test_buffer,
        strlen(test_buffer), &elapsed);
  tt_int_op(result,OP_EQ, 1);
  /* elapsed should be the time since the last hit */
  tt_int_op(elapsed,OP_EQ, 100);

  /*
   * Now let's turn the clock back to get coverage on the cache entry from the
   * future not-supposed-to-happen case.
   */
  result =
    replaycache_add_and_test_internal(150, r, test_buffer,
        strlen(test_buffer), &elapsed);
  /* We should still get a hit */
  tt_int_op(result,OP_EQ, 1);
  /* ...but it shouldn't let us see a negative elapsed time */
  tt_int_op(elapsed,OP_EQ, 0);

 done:
  if (r) replaycache_free(r);

  return;
}
Example #6
0
static void
test_replaycache_scrub(void *arg)
{
  replaycache_t *r = NULL;
  int result;

  (void)arg;
  r = replaycache_new(600, 300);
  tt_assert(r != NULL);

  /* Set up like in test_replaycache_hit() */
  result =
    replaycache_add_and_test_internal(100, r, test_buffer,
        strlen(test_buffer), NULL);
  tt_int_op(result,OP_EQ, 0);

  result =
    replaycache_add_and_test_internal(200, r, test_buffer,
        strlen(test_buffer), NULL);
  tt_int_op(result,OP_EQ, 1);

  /*
   * Poke a few replaycache_scrub_if_needed_internal() error cases that
   * can't happen through replaycache_add_and_test_internal()
   */

  /* Null cache */
  replaycache_scrub_if_needed_internal(300, NULL);
  /* Assert we're still here */
  tt_assert(1);

  /* Make sure we hit the aging-out case too */
  replaycache_scrub_if_needed_internal(1500, r);
  /* Assert that we aged it */
  tt_int_op(digestmap_size(r->digests_seen),OP_EQ, 0);

 done:
  if (r) replaycache_free(r);

  return;
}
Example #7
0
int
replaycache_add_test_and_elapsed(
    replaycache_t *r, const void *data, int len, time_t *elapsed)
{
  return replaycache_add_and_test_internal(time(NULL), r, data, len, elapsed);
}
Example #8
0
int
replaycache_add_and_test(replaycache_t *r, const void *data, int len)
{
  return replaycache_add_and_test_internal(time(NULL), r, data, len, NULL);
}