int main(void) { char *root = getenv("srcdir"); DIR *dp; const char *host; char buffer[PATH_MAX]; char key[NKEY]; int idx, i, len; struct dirent *de; VBUCKET_CONFIG_HANDLE vb; unsigned char checksum[16]; unsigned char expected[16]; void *ctx; if (root != NULL) { sprintf(buffer, "%s/tests/config", root); dp = opendir(buffer); if (dp == NULL) { fprintf(stderr, "Skipping ketama check\nFailed to open %s: %s\n", buffer, strerror(errno)); return 0; } while ((de = readdir(dp)) != NULL) { if (strncmp(de->d_name, "ketama", 6) == 0 && strchr(de->d_name, '.') == NULL) { sprintf(buffer, "%s/tests/config/%s", root, de->d_name); fprintf(stderr, "Running ketama test for: %s\n", de->d_name); vb = vbucket_config_parse_file(buffer); assert(vb != NULL); /* check if it conforms to libketama results */ sprintf(buffer, "%s/tests/config/%s.md5sum", root, de->d_name); read_checksum(buffer, expected); memset(checksum, 0, 16); ctx = NULL; for (i = 0; i < 1000000; i++) { len = sprintf(key, "%d", i); vbucket_map(vb, key, len, NULL, &idx); host = vbucket_config_get_server(vb, idx); ctx = hash_md5_update(ctx, host, strlen(host)); } hash_md5_final(ctx, checksum); for (i = 0; i < 16; i++) { assert(checksum[i] == expected[i]); } vbucket_config_destroy(vb); } } closedir(dp); } return 0; }
/* for creating srs proc entry ... */ int create_srs_proc_entry(struct mtd_info *mtd) { struct proc_dir_entry *entry = NULL; int len = 0; int i =0; unsigned int ori_checksum=0, real_checksum=0; buffer_dinfo = kzalloc(DINFO_LENGTH, GFP_KERNEL); for(i=0; i< DINFO_BLOCK_TOTAL; i++){ if(!part_block_isbad(mtd, i*DINFO_LENGTH)){ part_read(mtd, i*DINFO_LENGTH, DINFO_LENGTH, &len, buffer_dinfo); pr_debug("SRS: Read dinfo partition block %d len=%d\n", i, len); break; } } if(i == DINFO_BLOCK_TOTAL){ printk(KERN_ERR"SRS: All dinfo blocks are bad!\n"); return -1; } if(len <= 0){ printk(KERN_ERR"SRS: Cannot read dinfo partition!\n"); return -2; } ori_checksum = read_checksum(buffer_dinfo, len); real_checksum = calc_checksum(buffer_dinfo, len); if(ori_checksum != real_checksum){ printk(KERN_ERR"SRS: Checksum Error! ori_checksum=0x%08X, real_checksum=0x%08X\n", ori_checksum, real_checksum); return -3; } entry = create_proc_entry(SRS_PROC_ENTRY_NAME,S_IRUSR | S_IRGRP | S_IROTH ,NULL); if(!entry) { printk(KERN_ERR"SRS: Cannot create /proc/%s\n", SRS_PROC_ENTRY_NAME); return -4; } entry->proc_fops = &srs_fops; pr_debug("SRS: /proc/%s successfully created!\n", SRS_PROC_ENTRY_NAME); return 0; }
int main(void) { char *root = getenv("srcdir"); const char *host; char buffer[FILENAME_MAX]; char key[NKEY]; int idx, i, len, ff; VBUCKET_CONFIG_HANDLE vb; unsigned char checksum[16]; unsigned char expected[16]; void *ctx; if (root != NULL) { for (ff = 0; test_cases[ff] != NULL; ++ff) { snprintf(buffer, FILENAME_MAX, "%s/tests/config/%s", root, test_cases[ff]); fprintf(stderr, "Running ketama test for: %s\n", test_cases[ff]); vb = vbucket_config_create(); assert(vbucket_config_parse(vb, LIBVBUCKET_SOURCE_FILE, buffer) == 0); /* check if it conforms to libketama results */ snprintf(buffer, FILENAME_MAX,"%s/tests/config/%s.md5sum", root, test_cases[ff]); read_checksum(buffer, expected); memset(checksum, 0, 16); ctx = NULL; for (i = 0; i < 1000000; i++) { len = snprintf(key, NKEY, "%d", i); vbucket_map(vb, key, len, NULL, &idx); host = vbucket_config_get_server(vb, idx); ctx = hash_md5_update(ctx, host, strlen(host)); } hash_md5_final(ctx, checksum); for (i = 0; i < 16; i++) { assert(checksum[i] == expected[i]); } vbucket_config_destroy(vb); } } exit(EXIT_SUCCESS); }
int main(int argc, char** argv) { if (argc < 3) { fprintf(stderr, "Must specify I2C bus number and command\n"); return -1; } int returnVal = -1; int fd = i2c_open(atoi(argv[1]), I2C_ADDRESS); if (fd == -1) return -1; if (strcmp(argv[2], "s") == 0) { returnVal = switch_application(fd); } else if (strcmp(argv[2], "v") == 0) { unsigned char version[INFO_SIZE]; version[INFO_SIZE] = '\0'; returnVal = read_version(fd, version, INFO_SIZE); if (returnVal != -1) printf("%s\n", version); } else if (strcmp(argv[2], "c") == 0) { unsigned char buffer[2]; returnVal = read_checksum(fd, buffer, sizeof(buffer)); if (returnVal != -1) { printf("%02X %02X\n", buffer[0], buffer[1]); } } else { fprintf(stderr, "Unknown command\n"); } i2c_close(fd); return returnVal; }