Exemplo n.º 1
0
memcached_return_t memcached_behavior_set_distribution_hash(memcached_st *ptr, memcached_hash_t type)
{
  hashkit_return_t rc;
  rc= hashkit_set_function(&ptr->distribution_hashkit, (hashkit_hash_algorithm_t)type);

  return rc == HASHKIT_SUCCESS ? MEMCACHED_SUCCESS : MEMCACHED_FAILURE;
}
Exemplo n.º 2
0
memcached_return_t memcached_behavior_set_distribution_hash(memcached_st *ptr, memcached_hash_t type)
{
  if (hashkit_set_function(&ptr->distribution_hashkit, (hashkit_hash_algorithm_t)type) == HASHKIT_SUCCESS)
    return MEMCACHED_SUCCESS;

  return memcached_set_error_string(ptr, MEMCACHED_INVALID_ARGUMENTS,
                                    memcached_string_with_size("Invalid memcached_hash_t()"));
}
Exemplo n.º 3
0
static test_return_t hashkit_get_function_test(hashkit_st *hashk)
{
  for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++)
  {
    hashkit_return_t rc;

    if (HASHKIT_HASH_CUSTOM || HASHKIT_HASH_HSIEH)
      continue;

    rc= hashkit_set_function(hashk, algo);
    test_true(rc == HASHKIT_SUCCESS);

    test_true(hashkit_get_function(hashk) == algo);
  }
  return TEST_SUCCESS;
}
Exemplo n.º 4
0
static test_return_t hashkit_set_function_test(hashkit_st *hashk)
{
  for (hashkit_hash_algorithm_t algo = HASHKIT_HASH_DEFAULT; algo < HASHKIT_HASH_MAX; algo++)
  {
    hashkit_return_t rc;
    uint32_t x;
    const char **ptr;
    uint32_t *list;

    rc= hashkit_set_function(hashk, algo);

    /* Hsieh is disabled most of the time for patent issues */
#ifndef HAVE_HSIEH_HASH
    if (rc == HASHKIT_FAILURE && algo == HASHKIT_HASH_HSIEH)
      continue;
#endif

#ifndef HAVE_MURMUR_HASH
    if (rc == HASHKIT_FAILURE && algo == HASHKIT_HASH_MURMUR)
      continue;
#endif

    if (rc == HASHKIT_INVALID_ARGUMENT && algo == HASHKIT_HASH_CUSTOM)
      continue;

    test_true_got(rc == HASHKIT_SUCCESS, hashkit_strerror(NULL, rc));

    switch (algo)
    {
    case HASHKIT_HASH_DEFAULT:
      list= one_at_a_time_values;
      break;
    case HASHKIT_HASH_MD5:
      list= md5_values;
      break;
    case HASHKIT_HASH_CRC:
      list= crc_values;
      break;
    case HASHKIT_HASH_FNV1_64:
      list= fnv1_64_values;
      break;
    case HASHKIT_HASH_FNV1A_64:
      list= fnv1a_64_values;
      break;
    case HASHKIT_HASH_FNV1_32:
      list= fnv1_32_values;
      break;
    case HASHKIT_HASH_FNV1A_32:
      list= fnv1a_32_values;
      break;
    case HASHKIT_HASH_HSIEH:
      list= hsieh_values;
      break;
    case HASHKIT_HASH_MURMUR:
      list= murmur_values;
      break;
    case HASHKIT_HASH_JENKINS:
      list= jenkins_values;
      break;
    case HASHKIT_HASH_CUSTOM:
    case HASHKIT_HASH_MAX:
    default:
      list= NULL;
      break;
    }

    // Now we make sure we did set the hash correctly.
    if (list)
    {
      for (ptr= list_to_hash, x= 0; *ptr; ptr++, x++)
      {
        uint32_t hash_val;

        hash_val= hashkit_digest(hashk, *ptr, strlen(*ptr));
        test_true(list[x] == hash_val);
      }
    }
    else
    {
      return TEST_FAILURE;
    }
  }

  return TEST_SUCCESS;
}
Exemplo n.º 5
0
 hashkit_return_t set_distribution_function(hashkit_hash_algorithm_t hash_algorithm)
 {
     return hashkit_set_function(&self, hash_algorithm);
 }