Esempio n. 1
0
void
DjVuFileCache::enable(bool en)
{
   enabled=en;
   set_max_size(max_size);
}
 // Alignment
 void align(size_t alignment) {
   set_init_size(align_size_up(init_size(), alignment));
   set_max_size(align_size_up(max_size(), alignment));
 }
Esempio n. 3
0
void SetTest::testCAPI() {
	SET localset;
	SET remoteset;
	SET_CONFIG localconfig = set_create_config();
	SET_CONFIG remoteconfig = set_create_config();
	CPPUNIT_ASSERT(set_init(&localset,localconfig) == 0);
	CPPUNIT_ASSERT(set_init(&remoteset,remoteconfig) == 0);
	CPPUNIT_ASSERT(set_empty(&localset));
	CPPUNIT_ASSERT(set_empty(&remoteset));
	CPPUNIT_ASSERT(set_max_size(&localset) == localconfig.bf_max_elements);
	CPPUNIT_ASSERT(set_max_size(&remoteset) == remoteconfig.bf_max_elements);
	CPPUNIT_ASSERT(set_size(&localset) == 0);
	CPPUNIT_ASSERT(set_size(&remoteset) == 0);
	CPPUNIT_ASSERT(set_insert_string(&localset, "bla1"));
	CPPUNIT_ASSERT(set_insert_string(&remoteset, "bla2"));
	CPPUNIT_ASSERT(set_size(&localset) == 1);
	CPPUNIT_ASSERT(set_size(&remoteset) == 1);
	CPPUNIT_ASSERT(set_find_string(&localset, "bla1"));
	CPPUNIT_ASSERT(set_find_string(&remoteset, "bla2"));
	CPPUNIT_ASSERT(!set_find_string(&localset, "bla2"));
	CPPUNIT_ASSERT(!set_find_string(&remoteset, "bla1"));

	CPPUNIT_ASSERT(set_insert_string(&localset, "bla3"));
	CPPUNIT_ASSERT(set_size(&localset) == 2);
	CPPUNIT_ASSERT(set_erase_string(&localset, "bla3"));
	CPPUNIT_ASSERT(set_size(&localset) == 1);
	SET_SYNC_HANDLE localprocess;
	SET_SYNC_HANDLE remoteprocess;
	set_sync_init_handle(&localset, &localprocess);
	set_sync_init_handle(&remoteset, &remoteprocess);

	CPPUNIT_ASSERT(!set_sync_done(&localprocess));
	CPPUNIT_ASSERT(!set_sync_done(&remoteprocess));


	CPPUNIT_ASSERT(set_sync_min_bf_buffer(&localprocess)==1);
	CPPUNIT_ASSERT(set_sync_min_trie_buffer(&localprocess)==20*2);
	CPPUNIT_ASSERT(set_sync_min_trie_buffer(&localprocess)<=set_sync_min_buffer(&localprocess));

	// BF Sync
	std::size_t buffersize = 100;
	unsigned char buffer[buffersize];
	std::size_t sending;
	diff_callback * callback = &localset_callback;
	while (set_sync_bf_output_avail(&localprocess) == 1) {
		sending = set_sync_bf_read_next_chunk(&localprocess, buffer, buffersize);
		set_sync_bf_process_chunk(&remoteprocess, buffer, sending, callback, &localset);
	}
	while (set_sync_bf_output_avail(&remoteprocess) == 1) {
		sending = set_sync_bf_read_next_chunk(&remoteprocess, buffer, buffersize);
		set_sync_bf_process_chunk(&localprocess, buffer, sending, callback, &remoteset);
	}

	// BF SYNC DONE AND SET SHOULD BE EQUAL, SO ADDING A DIFF
	CPPUNIT_ASSERT(set_insert_string(&localset, "diff"));

	// Trie Sync
	size_t treecutsize = 2 * 20;
	unsigned char treecut[treecutsize];
	size_t subtriesize;
	std::size_t ackbuffersize = 20;
	unsigned char ackbuffer[ackbuffersize];
	std::size_t numberOfAcks;
	std::size_t acksize;

	while (!set_sync_done(&localprocess) && !set_sync_done(&remoteprocess)) {
		if (set_sync_trie_subtrie_output_avail(&localprocess)) {
			subtriesize = set_sync_trie_get_subtrie(&localprocess, treecut,
					treecutsize);
			CPPUNIT_ASSERT(subtriesize > 0);
			acksize = set_sync_trie_process_subtrie(&remoteprocess, treecut,
					subtriesize);
			CPPUNIT_ASSERT(acksize > 0);
		}
		if (set_sync_trie_acks_avail(&localprocess)) {
			acksize = set_sync_trie_read_acks(&localprocess, ackbuffer,
					ackbuffersize, &numberOfAcks);
			CPPUNIT_ASSERT(numberOfAcks > 0);
			CPPUNIT_ASSERT(acksize > 0);
			set_sync_trie_process_acks(&remoteprocess, ackbuffer, acksize,
					numberOfAcks, callback, &localset);
		}
		if (set_sync_trie_subtrie_output_avail(&remoteprocess)) {
			subtriesize = set_sync_trie_get_subtrie(&remoteprocess, treecut,
					treecutsize);
			CPPUNIT_ASSERT(subtriesize > 0);
			acksize = set_sync_trie_process_subtrie(&localprocess, treecut,
					subtriesize);
			CPPUNIT_ASSERT(acksize > 0);
		}
		if (set_sync_trie_acks_avail(&remoteprocess)) {
			acksize = set_sync_trie_read_acks(&remoteprocess, ackbuffer,
					ackbuffersize, &numberOfAcks);
			CPPUNIT_ASSERT(numberOfAcks > 0);
			CPPUNIT_ASSERT(acksize > 0);
			set_sync_trie_process_acks(&localprocess, ackbuffer, acksize,
					numberOfAcks, callback, &remoteset);
		}
	}
	// TRIES SHOULD BE EQUAL -> TEST IT
	unsigned char localroot[20];
	unsigned char remoteroot[20];
	CPPUNIT_ASSERT(set_sync_get_root_hash(&localprocess, localroot)==0);
	CPPUNIT_ASSERT(set_sync_get_root_hash(&remoteprocess, remoteroot)==0);
	CPPUNIT_ASSERT(set_sync_is_equal_to_hash(&localprocess,remoteroot));
	CPPUNIT_ASSERT(set_sync_is_equal_to_hash(&remoteprocess,localroot));

	// TRANSMITTED DATA TEST
	CPPUNIT_ASSERT(set_sync_received_bytes(&localprocess) == set_sync_sent_bytes(&remoteprocess));
	CPPUNIT_ASSERT(set_sync_received_bytes(&remoteprocess) == set_sync_sent_bytes(&localprocess));

	CPPUNIT_ASSERT(set_sync_free_handle(&localprocess)==0);
	CPPUNIT_ASSERT(set_sync_free_handle(&remoteprocess)==0);
	CPPUNIT_ASSERT(set_free(&localset)==0);
	CPPUNIT_ASSERT(set_free(&remoteset)==0);
}