void test_read_fasta_file(struct test *t) { t_set_msg(t, "Testing reading a fasta File..."); struct genome_sequence *sequence_table = NULL; char filename[30] = "test/data/test.fasta"; int err = read_fasta_file(&sequence_table, filename); t_assert_msg(t, err == E_SUCCESS, "Parsing failed"); t_log(t, "Error: %d\n", err); struct genome_sequence *s = NULL; struct genome_sequence *tmp = NULL; HASH_ITER(hh, sequence_table, s, tmp) { s->data[s->n] = 0; t_log(t, "%s %s \n\n", s->chrom, s->data); }
file_desc *init_file_desc() { file_desc *f_desc = NULL; t_lock *block_list_lock = NULL; if(NULL == (f_desc = (file_desc *)t_malloc(sizeof(file_desc)))) { t_log("malloc login_buf frame error!"); return NULL; } if(NULL == (f_desc->block_head =\ (file_block_desc *)t_malloc(sizeof(file_block_desc)))) return NULL; f_desc->block_head->next = NULL; f_desc->block_tail = f_desc->block_head; block_list_lock = (t_lock *)t_malloc(sizeof(t_lock)); init_lock(block_list_lock); f_desc->block_list_lock = block_list_lock; f_desc->file_size = 0; f_desc->file_id = 0; f_desc->block_count = 0; f_desc->last_frame_count = 0; f_desc->frame_remain = NULL; return f_desc; }
void test_valid_line(struct test *t) { t_set_msg(t, "Testing reading a valid Sam line..."); char sample_line[1000] = "Seq23599_x1\t272\tscaffold_1\t67\t0\t" "21M\t*\t0\t0\tGCCACCCATGCCGCATCCACA\t" "IIIIIIIIIIIIIIIIIIIII\tAS:i:-6\tXN:i:0\tXM:i:1\tXO:i:0\t" "XG:i:0\tNM:i:1\tMD:Z:12A8\tYT:Z:UU\tNH:i:16\tCC:Z:=\t" "CP:i:250\tHI:i:0\n"; struct sam_entry *test_entry = NULL; int result = parse_line(&test_entry, sample_line); t_assert_msg(t, result == E_SUCCESS, "Parsing the line failed"); t_assert_msg(t, test_entry->flag == 272, "Flag parsed wrong"); t_assert_msg(t, test_entry->pos == 67, "Position parsed wrong"); t_log(t, "%s", test_entry->seq); t_assert_msg(t, strcmp(test_entry->seq, "GCCACCCATGCCGCATCCACA") == 0, "Sequence parsed wrong"); free_sam_entry(test_entry); }
void read_thread(void *args) { transfer_session *session; file_desc *f_desc; file_block_desc *b_desc; frame_index *f_index, *last_index; FILE *fp = NULL; int err; int i = 0; session = (transfer_session *)args; f_desc = session->f_desc; for(;;) { if(session->state != STATE_TRANSFER) { /* if state = finish, close file and exit the thread */ if(fp) { fclose(fp); fp = NULL; } sleep(1); continue; } if(NULL == fp) { if(NULL == (fp = fopen(f_desc->file_name, "r"))) { t_log("open file error"); continue; } } b_desc = get_first_block(f_desc); if(b_desc == ERR_BLOCK_LIST_NULL) return; else if(b_desc == ERR_BLOCK_LIST_EMPTY) { sleep(1); continue; } else { if(b_desc->retry_flag == ORIGIN_FRAME) { f_index = b_desc->index; for(i = 1; i <= MAX_FRAME_COUNT; i++) { f_index->frame_index = i; if(read_file_to_msg_q(f_index, f_desc, fp, session->data_qid) < 0) break; } t_free(f_index); } else if(b_desc->retry_flag == RETRAN_FRAME) { printf("read_thread re tran\n"); f_index = b_desc->index; if(f_index->frame_index == 0XFFFF) { for(i = 1; i <= MAX_FRAME_COUNT; i++) { f_index->frame_index = i; read_file_to_msg_q(f_index, f_desc, fp, session->data_qid); } t_free(f_index); } else { do { read_file_to_msg_q(f_index, f_desc, fp, session->data_qid); last_index = f_index; f_index = f_index->next; t_free(last_index); }while(f_index); } } } t_free(b_desc); // printf("block:%d\n", b_desc->index->block_index); } return; }