Ejemplo n.º 1
0
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;
}
Ejemplo n.º 3
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);
}
Ejemplo n.º 4
0
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;
}