12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394 |
- /*
- * test_suites.c
- *
- * Created on: Jun 19, 2013
- * Author: petera
- */
- #include "testrunner.h"
- #include "test_spiffs.h"
- #include "spiffs_nucleus.h"
- #include "spiffs.h"
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <fcntl.h>
- #include <dirent.h>
- #include <unistd.h>
- SUITE(hydrogen_tests)
- void setup() {
- _setup();
- }
- void teardown() {
- _teardown();
- }
- TEST(info)
- {
- u32_t used, total;
- int res = SPIFFS_info(FS, &total, &used);
- TEST_CHECK(res == SPIFFS_OK);
- TEST_CHECK(used == 0);
- TEST_CHECK(total < __fs.cfg.phys_size);
- return TEST_RES_OK;
- }
- TEST_END(info)
- TEST(missing_file)
- {
- spiffs_file fd = SPIFFS_open(FS, "this_wont_exist", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd < 0);
- return TEST_RES_OK;
- }
- TEST_END(missing_file)
- TEST(bad_fd)
- {
- int res;
- spiffs_stat s;
- spiffs_file fd = SPIFFS_open(FS, "this_wont_exist", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd < 0);
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_BAD_DESCRIPTOR);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_BAD_DESCRIPTOR);
- res = SPIFFS_lseek(FS, fd, 0, SPIFFS_SEEK_CUR);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_BAD_DESCRIPTOR);
- res = SPIFFS_read(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_BAD_DESCRIPTOR);
- res = SPIFFS_write(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_BAD_DESCRIPTOR);
- return TEST_RES_OK;
- }
- TEST_END(bad_fd)
- TEST(closed_fd)
- {
- int res;
- spiffs_stat s;
- res = test_create_file("file");
- spiffs_file fd = SPIFFS_open(FS, "file", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd >= 0);
- SPIFFS_close(FS, fd);
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_lseek(FS, fd, 0, SPIFFS_SEEK_CUR);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_read(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_write(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- return TEST_RES_OK;
- }
- TEST_END(closed_fd)
- TEST(deleted_same_fd)
- {
- int res;
- spiffs_stat s;
- spiffs_file fd;
- res = test_create_file("remove");
- fd = SPIFFS_open(FS, "remove", SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- fd = SPIFFS_open(FS, "remove", SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res >= 0);
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_lseek(FS, fd, 0, SPIFFS_SEEK_CUR);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_read(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_write(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- return TEST_RES_OK;
- }
- TEST_END(deleted_same_fd)
- TEST(deleted_other_fd)
- {
- int res;
- spiffs_stat s;
- spiffs_file fd, fd_orig;
- res = test_create_file("remove");
- fd_orig = SPIFFS_open(FS, "remove", SPIFFS_RDWR, 0);
- TEST_CHECK(fd_orig >= 0);
- fd = SPIFFS_open(FS, "remove", SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_fremove(FS, fd_orig);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd_orig);
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_lseek(FS, fd, 0, SPIFFS_SEEK_CUR);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_read(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- res = SPIFFS_write(FS, fd, 0, 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_FILE_CLOSED);
- return TEST_RES_OK;
- }
- TEST_END(deleted_other_fd)
- TEST(file_by_open)
- {
- int res;
- spiffs_stat s;
- spiffs_file fd = SPIFFS_open(FS, "filebopen", SPIFFS_CREAT, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res >= 0);
- TEST_CHECK(strcmp((char*)s.name, "filebopen") == 0);
- TEST_CHECK(s.size == 0);
- SPIFFS_close(FS, fd);
- fd = SPIFFS_open(FS, "filebopen", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res >= 0);
- TEST_CHECK(strcmp((char*)s.name, "filebopen") == 0);
- TEST_CHECK(s.size == 0);
- SPIFFS_close(FS, fd);
- return TEST_RES_OK;
- }
- TEST_END(file_by_open)
- TEST(file_by_creat)
- {
- int res;
- res = test_create_file("filebcreat");
- TEST_CHECK(res >= 0);
- res = SPIFFS_creat(FS, "filebcreat", 0);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS)==SPIFFS_ERR_CONFLICTING_NAME);
- return TEST_RES_OK;
- }
- TEST_END(file_by_creat)
- TEST(list_dir)
- {
- int res;
- char *files[4] = {
- "file1",
- "file2",
- "file3",
- "file4"
- };
- int file_cnt = sizeof(files)/sizeof(char *);
- int i;
- for (i = 0; i < file_cnt; i++) {
- res = test_create_file(files[i]);
- TEST_CHECK(res >= 0);
- }
- spiffs_DIR d;
- struct spiffs_dirent e;
- struct spiffs_dirent *pe = &e;
- SPIFFS_opendir(FS, "/", &d);
- int found = 0;
- while ((pe = SPIFFS_readdir(&d, pe))) {
- printf(" %s [%04x] size:%i\n", pe->name, pe->obj_id, pe->size);
- for (i = 0; i < file_cnt; i++) {
- if (strcmp(files[i], pe->name) == 0) {
- found++;
- break;
- }
- }
- }
- SPIFFS_closedir(&d);
- TEST_CHECK(found == file_cnt);
- return TEST_RES_OK;
- }
- TEST_END(list_dir)
- TEST(open_by_dirent) {
- int res;
- char *files[4] = {
- "file1",
- "file2",
- "file3",
- "file4"
- };
- int file_cnt = sizeof(files)/sizeof(char *);
- int i;
- int size = SPIFFS_DATA_PAGE_SIZE(FS);
- for (i = 0; i < file_cnt; i++) {
- res = test_create_and_write_file(files[i], size, size);
- TEST_CHECK(res >= 0);
- }
- spiffs_DIR d;
- struct spiffs_dirent e;
- struct spiffs_dirent *pe = &e;
- int found = 0;
- SPIFFS_opendir(FS, "/", &d);
- while ((pe = SPIFFS_readdir(&d, pe))) {
- spiffs_file fd = SPIFFS_open_by_dirent(FS, pe, SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- res = read_and_verify_fd(fd, pe->name);
- TEST_CHECK(res == SPIFFS_OK);
- fd = SPIFFS_open_by_dirent(FS, pe, SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res == SPIFFS_OK);
- SPIFFS_close(FS, fd);
- found++;
- }
- SPIFFS_closedir(&d);
- TEST_CHECK(found == file_cnt);
- found = 0;
- SPIFFS_opendir(FS, "/", &d);
- while ((pe = SPIFFS_readdir(&d, pe))) {
- found++;
- }
- SPIFFS_closedir(&d);
- TEST_CHECK(found == 0);
- return TEST_RES_OK;
- } TEST_END(open_by_dirent)
- TEST(rename) {
- int res;
- char *src_name = "baah";
- char *dst_name = "booh";
- char *dst_name2 = "beeh";
- int size = SPIFFS_DATA_PAGE_SIZE(FS);
- res = test_create_and_write_file(src_name, size, size);
- TEST_CHECK(res >= 0);
- res = SPIFFS_rename(FS, src_name, dst_name);
- TEST_CHECK(res >= 0);
- res = SPIFFS_rename(FS, dst_name, dst_name);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_CONFLICTING_NAME);
- res = SPIFFS_rename(FS, src_name, dst_name2);
- TEST_CHECK(res < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_NOT_FOUND);
- return TEST_RES_OK;
- } TEST_END(rename)
- TEST(remove_single_by_path)
- {
- int res;
- spiffs_file fd;
- res = test_create_file("remove");
- TEST_CHECK(res >= 0);
- res = SPIFFS_remove(FS, "remove");
- TEST_CHECK(res >= 0);
- fd = SPIFFS_open(FS, "remove", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_NOT_FOUND);
- return TEST_RES_OK;
- }
- TEST_END(remove_single_by_path)
- TEST(remove_single_by_fd)
- {
- int res;
- spiffs_file fd;
- res = test_create_file("remove");
- TEST_CHECK(res >= 0);
- fd = SPIFFS_open(FS, "remove", SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- fd = SPIFFS_open(FS, "remove", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_NOT_FOUND);
- return TEST_RES_OK;
- }
- TEST_END(remove_single_by_fd)
- TEST(write_big_file_chunks_page)
- {
- int size = ((50*(FS)->cfg.phys_size)/100);
- printf(" filesize %i\n", size);
- int res = test_create_and_write_file("bigfile", size, SPIFFS_DATA_PAGE_SIZE(FS));
- TEST_CHECK(res >= 0);
- res = read_and_verify("bigfile");
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(write_big_file_chunks_page)
- TEST(write_big_files_chunks_page)
- {
- char name[32];
- int f;
- int files = 10;
- int res;
- int size = ((50*(FS)->cfg.phys_size)/100)/files;
- printf(" filesize %i\n", size);
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = test_create_and_write_file(name, size, SPIFFS_DATA_PAGE_SIZE(FS));
- TEST_CHECK(res >= 0);
- }
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = read_and_verify(name);
- TEST_CHECK(res >= 0);
- }
- return TEST_RES_OK;
- }
- TEST_END(write_big_files_chunks_page)
- TEST(write_big_file_chunks_index)
- {
- int size = ((50*(FS)->cfg.phys_size)/100);
- printf(" filesize %i\n", size);
- int res = test_create_and_write_file("bigfile", size, SPIFFS_DATA_PAGE_SIZE(FS) * SPIFFS_OBJ_HDR_IX_LEN(FS));
- TEST_CHECK(res >= 0);
- res = read_and_verify("bigfile");
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(write_big_file_chunks_index)
- TEST(write_big_files_chunks_index)
- {
- char name[32];
- int f;
- int files = 10;
- int res;
- int size = ((50*(FS)->cfg.phys_size)/100)/files;
- printf(" filesize %i\n", size);
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = test_create_and_write_file(name, size, SPIFFS_DATA_PAGE_SIZE(FS) * SPIFFS_OBJ_HDR_IX_LEN(FS));
- TEST_CHECK(res >= 0);
- }
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = read_and_verify(name);
- TEST_CHECK(res >= 0);
- }
- return TEST_RES_OK;
- }
- TEST_END(write_big_files_chunks_index)
- TEST(write_big_file_chunks_huge)
- {
- int size = (FS_PURE_DATA_PAGES(FS) / 2) * SPIFFS_DATA_PAGE_SIZE(FS);
- printf(" filesize %i\n", size);
- int res = test_create_and_write_file("bigfile", size, size);
- TEST_CHECK(res >= 0);
- res = read_and_verify("bigfile");
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(write_big_file_chunks_huge)
- TEST(write_big_files_chunks_huge)
- {
- char name[32];
- int f;
- int files = 10;
- int res;
- int size = ((50*(FS)->cfg.phys_size)/100)/files;
- printf(" filesize %i\n", size);
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = test_create_and_write_file(name, size, size);
- TEST_CHECK(res >= 0);
- }
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = read_and_verify(name);
- TEST_CHECK(res >= 0);
- }
- return TEST_RES_OK;
- }
- TEST_END(write_big_files_chunks_huge)
- TEST(truncate_big_file)
- {
- int size = (FS_PURE_DATA_PAGES(FS) / 2) * SPIFFS_DATA_PAGE_SIZE(FS);
- printf(" filesize %i\n", size);
- int res = test_create_and_write_file("bigfile", size, size);
- TEST_CHECK(res >= 0);
- res = read_and_verify("bigfile");
- TEST_CHECK(res >= 0);
- spiffs_file fd = SPIFFS_open(FS, "bigfile", SPIFFS_RDWR, 0);
- TEST_CHECK(fd > 0);
- res = SPIFFS_fremove(FS, fd);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- fd = SPIFFS_open(FS, "bigfile", SPIFFS_RDWR, 0);
- TEST_CHECK(fd < 0);
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_NOT_FOUND);
- return TEST_RES_OK;
- }
- TEST_END(truncate_big_file)
- TEST(simultaneous_write) {
- int res = SPIFFS_creat(FS, "simul1", 0);
- TEST_CHECK(res >= 0);
- spiffs_file fd1 = SPIFFS_open(FS, "simul1", SPIFFS_RDWR, 0);
- TEST_CHECK(fd1 > 0);
- spiffs_file fd2 = SPIFFS_open(FS, "simul1", SPIFFS_RDWR, 0);
- TEST_CHECK(fd2 > 0);
- spiffs_file fd3 = SPIFFS_open(FS, "simul1", SPIFFS_RDWR, 0);
- TEST_CHECK(fd3 > 0);
- u8_t data1 = 1;
- u8_t data2 = 2;
- u8_t data3 = 3;
- res = SPIFFS_write(FS, fd1, &data1, 1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd1);
- res = SPIFFS_write(FS, fd2, &data2, 1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd2);
- res = SPIFFS_write(FS, fd3, &data3, 1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd3);
- spiffs_stat s;
- res = SPIFFS_stat(FS, "simul1", &s);
- TEST_CHECK(res >= 0);
- TEST_CHECK(s.size == 1);
- u8_t rdata;
- spiffs_file fd = SPIFFS_open(FS, "simul1", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd > 0);
- res = SPIFFS_read(FS, fd, &rdata, 1);
- TEST_CHECK(res >= 0);
- TEST_CHECK(rdata == data3);
- return TEST_RES_OK;
- }
- TEST_END(simultaneous_write)
- TEST(simultaneous_write_append) {
- int res = SPIFFS_creat(FS, "simul2", 0);
- TEST_CHECK(res >= 0);
- spiffs_file fd1 = SPIFFS_open(FS, "simul2", SPIFFS_RDWR | SPIFFS_APPEND, 0);
- TEST_CHECK(fd1 > 0);
- spiffs_file fd2 = SPIFFS_open(FS, "simul2", SPIFFS_RDWR | SPIFFS_APPEND, 0);
- TEST_CHECK(fd2 > 0);
- spiffs_file fd3 = SPIFFS_open(FS, "simul2", SPIFFS_RDWR | SPIFFS_APPEND, 0);
- TEST_CHECK(fd3 > 0);
- u8_t data1 = 1;
- u8_t data2 = 2;
- u8_t data3 = 3;
- res = SPIFFS_write(FS, fd1, &data1, 1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd1);
- res = SPIFFS_write(FS, fd2, &data2, 1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd2);
- res = SPIFFS_write(FS, fd3, &data3, 1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd3);
- spiffs_stat s;
- res = SPIFFS_stat(FS, "simul2", &s);
- TEST_CHECK(res >= 0);
- TEST_CHECK(s.size == 3);
- u8_t rdata[3];
- spiffs_file fd = SPIFFS_open(FS, "simul2", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd > 0);
- res = SPIFFS_read(FS, fd, &rdata, 3);
- TEST_CHECK(res >= 0);
- TEST_CHECK(rdata[0] == data1);
- TEST_CHECK(rdata[1] == data2);
- TEST_CHECK(rdata[2] == data3);
- return TEST_RES_OK;
- }
- TEST_END(simultaneous_write_append)
- TEST(file_uniqueness)
- {
- int res;
- spiffs_file fd;
- char fname[32];
- int files = ((SPIFFS_CFG_PHYS_SZ(FS) * 75) / 100) / 2 / SPIFFS_CFG_LOG_PAGE_SZ(FS);
- //(FS_PURE_DATA_PAGES(FS) / 2) - SPIFFS_PAGES_PER_BLOCK(FS)*8;
- int i;
- printf(" creating %i files\n", files);
- for (i = 0; i < files; i++) {
- char content[20];
- sprintf(fname, "file%i", i);
- sprintf(content, "%i", i);
- res = test_create_file(fname);
- TEST_CHECK(res >= 0);
- fd = SPIFFS_open(FS, fname, SPIFFS_APPEND | SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_write(FS, fd, content, strlen(content)+1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- }
- printf(" checking %i files\n", files);
- for (i = 0; i < files; i++) {
- char content[20];
- char ref_content[20];
- sprintf(fname, "file%i", i);
- sprintf(content, "%i", i);
- fd = SPIFFS_open(FS, fname, SPIFFS_RDONLY, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_read(FS, fd, ref_content, strlen(content)+1);
- TEST_CHECK(res >= 0);
- TEST_CHECK(strcmp(ref_content, content) == 0);
- SPIFFS_close(FS, fd);
- }
- printf(" removing %i files\n", files/2);
- for (i = 0; i < files; i += 2) {
- sprintf(fname, "file%i", i);
- res = SPIFFS_remove(FS, fname);
- TEST_CHECK(res >= 0);
- }
- printf(" creating %i files\n", files/2);
- for (i = 0; i < files; i += 2) {
- char content[20];
- sprintf(fname, "file%i", i);
- sprintf(content, "new%i", i);
- res = test_create_file(fname);
- TEST_CHECK(res >= 0);
- fd = SPIFFS_open(FS, fname, SPIFFS_APPEND | SPIFFS_RDWR, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_write(FS, fd, content, strlen(content)+1);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- }
- printf(" checking %i files\n", files);
- for (i = 0; i < files; i++) {
- char content[20];
- char ref_content[20];
- sprintf(fname, "file%i", i);
- if ((i & 1) == 0) {
- sprintf(content, "new%i", i);
- } else {
- sprintf(content, "%i", i);
- }
- fd = SPIFFS_open(FS, fname, SPIFFS_RDONLY, 0);
- TEST_CHECK(fd >= 0);
- res = SPIFFS_read(FS, fd, ref_content, strlen(content)+1);
- TEST_CHECK(res >= 0);
- TEST_CHECK(strcmp(ref_content, content) == 0);
- SPIFFS_close(FS, fd);
- }
- return TEST_RES_OK;
- }
- TEST_END(file_uniqueness)
- int create_and_read_back(int size, int chunk) {
- char *name = "file";
- spiffs_file fd;
- s32_t res;
- u8_t *buf = malloc(size);
- memrand(buf, size);
- res = test_create_file(name);
- CHECK(res >= 0);
- fd = SPIFFS_open(FS, name, SPIFFS_APPEND | SPIFFS_RDWR, 0);
- CHECK(fd >= 0);
- res = SPIFFS_write(FS, fd, buf, size);
- CHECK(res >= 0);
- spiffs_stat stat;
- res = SPIFFS_fstat(FS, fd, &stat);
- CHECK(res >= 0);
- CHECK(stat.size == size);
- SPIFFS_close(FS, fd);
- fd = SPIFFS_open(FS, name, SPIFFS_RDONLY, 0);
- CHECK(fd >= 0);
- u8_t *rbuf = malloc(size);
- int offs = 0;
- while (offs < size) {
- int len = MIN(size - offs, chunk);
- res = SPIFFS_read(FS, fd, &rbuf[offs], len);
- CHECK(res >= 0);
- CHECK(memcmp(&rbuf[offs], &buf[offs], len) == 0);
- offs += chunk;
- }
- CHECK(memcmp(&rbuf[0], &buf[0], size) == 0);
- SPIFFS_close(FS, fd);
- free(rbuf);
- free(buf);
- return 0;
- }
- TEST(read_chunk_1)
- {
- TEST_CHECK(create_and_read_back(SPIFFS_DATA_PAGE_SIZE(FS)*8, 1) == 0);
- return TEST_RES_OK;
- }
- TEST_END(read_chunk_1)
- TEST(read_chunk_page)
- {
- TEST_CHECK(create_and_read_back(SPIFFS_DATA_PAGE_SIZE(FS)*(SPIFFS_PAGES_PER_BLOCK(FS) - SPIFFS_OBJ_LOOKUP_PAGES(FS))*2,
- SPIFFS_DATA_PAGE_SIZE(FS)) == 0);
- return TEST_RES_OK;
- }
- TEST_END(read_chunk_page)
- TEST(read_chunk_index)
- {
- TEST_CHECK(create_and_read_back(SPIFFS_DATA_PAGE_SIZE(FS)*(SPIFFS_PAGES_PER_BLOCK(FS) - SPIFFS_OBJ_LOOKUP_PAGES(FS))*4,
- SPIFFS_DATA_PAGE_SIZE(FS)*(SPIFFS_PAGES_PER_BLOCK(FS) - SPIFFS_OBJ_LOOKUP_PAGES(FS))) == 0);
- return TEST_RES_OK;
- }
- TEST_END(read_chunk_index)
- TEST(read_chunk_huge)
- {
- int sz = (2*(FS)->cfg.phys_size)/3;
- TEST_CHECK(create_and_read_back(sz, sz) == 0);
- return TEST_RES_OK;
- }
- TEST_END(read_chunk_huge)
- TEST(read_beyond)
- {
- char *name = "file";
- spiffs_file fd;
- s32_t res;
- u32_t size = SPIFFS_DATA_PAGE_SIZE(FS)*2;
- u8_t *buf = malloc(size);
- memrand(buf, size);
- res = test_create_file(name);
- CHECK(res >= 0);
- fd = SPIFFS_open(FS, name, SPIFFS_APPEND | SPIFFS_RDWR, 0);
- CHECK(fd >= 0);
- res = SPIFFS_write(FS, fd, buf, size);
- CHECK(res >= 0);
- spiffs_stat stat;
- res = SPIFFS_fstat(FS, fd, &stat);
- CHECK(res >= 0);
- CHECK(stat.size == size);
- SPIFFS_close(FS, fd);
- fd = SPIFFS_open(FS, name, SPIFFS_RDONLY, 0);
- CHECK(fd >= 0);
- u8_t *rbuf = malloc(size+10);
- res = SPIFFS_read(FS, fd, rbuf, size+10);
- SPIFFS_close(FS, fd);
- free(rbuf);
- free(buf);
- TEST_CHECK(res == size);
- return TEST_RES_OK;
- }
- TEST_END(read_beyond)
- TEST(bad_index_1) {
- int size = SPIFFS_DATA_PAGE_SIZE(FS)*3;
- int res = test_create_and_write_file("file", size, size);
- TEST_CHECK(res >= 0);
- res = read_and_verify("file");
- TEST_CHECK(res >= 0);
- spiffs_file fd = SPIFFS_open(FS, "file", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd > 0);
- spiffs_stat s;
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- // modify object index, find object index header
- spiffs_page_ix pix;
- res = spiffs_obj_lu_find_id_and_span(FS, s.obj_id | SPIFFS_OBJ_ID_IX_FLAG, 0, 0, &pix);
- TEST_CHECK(res >= 0);
- // set object index entry 2 to a bad page, free
- u32_t addr = SPIFFS_PAGE_TO_PADDR(FS, pix) + sizeof(spiffs_page_object_ix_header) + 2 * sizeof(spiffs_page_ix);
- spiffs_page_ix bad_pix_ref = (spiffs_page_ix)-1;
- area_write(addr, (u8_t*)&bad_pix_ref, sizeof(spiffs_page_ix));
- #if SPIFFS_CACHE
- // delete all cache
- spiffs_cache *cache = spiffs_get_cache(FS);
- cache->cpage_use_map = 0;
- #endif
- res = read_and_verify("file");
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_INDEX_REF_FREE);
- return TEST_RES_OK;
- } TEST_END(bad_index_1)
- TEST(bad_index_2) {
- int size = SPIFFS_DATA_PAGE_SIZE(FS)*3;
- int res = test_create_and_write_file("file", size, size);
- TEST_CHECK(res >= 0);
- res = read_and_verify("file");
- TEST_CHECK(res >= 0);
- spiffs_file fd = SPIFFS_open(FS, "file", SPIFFS_RDONLY, 0);
- TEST_CHECK(fd > 0);
- spiffs_stat s;
- res = SPIFFS_fstat(FS, fd, &s);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- // modify object index, find object index header
- spiffs_page_ix pix;
- res = spiffs_obj_lu_find_id_and_span(FS, s.obj_id | SPIFFS_OBJ_ID_IX_FLAG, 0, 0, &pix);
- TEST_CHECK(res >= 0);
- // set object index entry 2 to a bad page, lu
- u32_t addr = SPIFFS_PAGE_TO_PADDR(FS, pix) + sizeof(spiffs_page_object_ix_header) + 2 * sizeof(spiffs_page_ix);
- spiffs_page_ix bad_pix_ref = SPIFFS_OBJ_LOOKUP_PAGES(FS)-1;
- area_write(addr, (u8_t*)&bad_pix_ref, sizeof(spiffs_page_ix));
- #if SPIFFS_CACHE
- // delete all cache
- spiffs_cache *cache = spiffs_get_cache(FS);
- cache->cpage_use_map = 0;
- #endif
- res = read_and_verify("file");
- TEST_CHECK(SPIFFS_errno(FS) == SPIFFS_ERR_INDEX_REF_LU);
- return TEST_RES_OK;
- } TEST_END(bad_index_2)
- TEST(lseek_simple_modification) {
- int res;
- spiffs_file fd;
- char *fname = "seekfile";
- int i;
- int len = 4096;
- fd = SPIFFS_open(FS, fname, SPIFFS_TRUNC | SPIFFS_CREAT | SPIFFS_RDWR, 0);
- TEST_CHECK(fd > 0);
- int pfd = open(make_test_fname(fname), O_TRUNC | O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
- u8_t *buf = malloc(len);
- memrand(buf, len);
- res = SPIFFS_write(FS, fd, buf, len);
- TEST_CHECK(res >= 0);
- write(pfd, buf, len);
- free(buf);
- res = read_and_verify(fname);
- TEST_CHECK(res >= 0);
- res = SPIFFS_lseek(FS, fd, len/2, SPIFFS_SEEK_SET);
- TEST_CHECK(res >= 0);
- lseek(pfd, len/2, SEEK_SET);
- len = len/4;
- buf = malloc(len);
- memrand(buf, len);
- res = SPIFFS_write(FS, fd, buf, len);
- TEST_CHECK(res >= 0);
- write(pfd, buf, len);
- free(buf);
- res = read_and_verify(fname);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- close(pfd);
- return TEST_RES_OK;
- }
- TEST_END(lseek_simple_modification)
- TEST(lseek_modification_append) {
- int res;
- spiffs_file fd;
- char *fname = "seekfile";
- int i;
- int len = 4096;
- fd = SPIFFS_open(FS, fname, SPIFFS_TRUNC | SPIFFS_CREAT | SPIFFS_RDWR, 0);
- TEST_CHECK(fd > 0);
- int pfd = open(make_test_fname(fname), O_TRUNC | O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
- u8_t *buf = malloc(len);
- memrand(buf, len);
- res = SPIFFS_write(FS, fd, buf, len);
- TEST_CHECK(res >= 0);
- write(pfd, buf, len);
- free(buf);
- res = read_and_verify(fname);
- TEST_CHECK(res >= 0);
- res = SPIFFS_lseek(FS, fd, len/2, SPIFFS_SEEK_SET);
- TEST_CHECK(res >= 0);
- lseek(pfd, len/2, SEEK_SET);
- buf = malloc(len);
- memrand(buf, len);
- res = SPIFFS_write(FS, fd, buf, len);
- TEST_CHECK(res >= 0);
- write(pfd, buf, len);
- free(buf);
- res = read_and_verify(fname);
- TEST_CHECK(res >= 0);
- SPIFFS_close(FS, fd);
- close(pfd);
- return TEST_RES_OK;
- }
- TEST_END(lseek_modification_append)
- TEST(lseek_modification_append_multi) {
- int res;
- spiffs_file fd;
- char *fname = "seekfile";
- int len = 1024;
- int runs = (FS_PURE_DATA_PAGES(FS) / 2) * SPIFFS_DATA_PAGE_SIZE(FS) / (len/2);
- fd = SPIFFS_open(FS, fname, SPIFFS_TRUNC | SPIFFS_CREAT | SPIFFS_RDWR, 0);
- TEST_CHECK(fd > 0);
- int pfd = open(make_test_fname(fname), O_TRUNC | O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
- u8_t *buf = malloc(len);
- memrand(buf, len);
- res = SPIFFS_write(FS, fd, buf, len);
- TEST_CHECK(res >= 0);
- write(pfd, buf, len);
- free(buf);
- res = read_and_verify(fname);
- TEST_CHECK(res >= 0);
- while (runs--) {
- res = SPIFFS_lseek(FS, fd, -len/2, SPIFFS_SEEK_END);
- TEST_CHECK(res >= 0);
- lseek(pfd, -len/2, SEEK_END);
- buf = malloc(len);
- memrand(buf, len);
- res = SPIFFS_write(FS, fd, buf, len);
- TEST_CHECK(res >= 0);
- write(pfd, buf, len);
- free(buf);
- res = read_and_verify(fname);
- TEST_CHECK(res >= 0);
- }
- SPIFFS_close(FS, fd);
- close(pfd);
- return TEST_RES_OK;
- }
- TEST_END(lseek_modification_append_multi)
- TEST(lseek_read) {
- int res;
- spiffs_file fd;
- char *fname = "seekfile";
- int len = (FS_PURE_DATA_PAGES(FS) / 2) * SPIFFS_DATA_PAGE_SIZE(FS);
- int runs = 100000;
- fd = SPIFFS_open(FS, fname, SPIFFS_TRUNC | SPIFFS_CREAT | SPIFFS_RDWR, 0);
- TEST_CHECK(fd > 0);
- u8_t *refbuf = malloc(len);
- memrand(refbuf, len);
- res = SPIFFS_write(FS, fd, refbuf, len);
- TEST_CHECK(res >= 0);
- int offs = 0;
- res = SPIFFS_lseek(FS, fd, 0, SPIFFS_SEEK_SET);
- TEST_CHECK(res >= 0);
- while (runs--) {
- int i;
- u8_t buf[64];
- if (offs + 41 + sizeof(buf) >= len) {
- offs = (offs + 41 + sizeof(buf)) % len;
- res = SPIFFS_lseek(FS, fd, offs, SPIFFS_SEEK_SET);
- TEST_CHECK(res >= 0);
- }
- res = SPIFFS_lseek(FS, fd, 41, SPIFFS_SEEK_CUR);
- TEST_CHECK(res >= 0);
- offs += 41;
- res = SPIFFS_read(FS, fd, buf, sizeof(buf));
- TEST_CHECK(res >= 0);
- for (i = 0; i < sizeof(buf); i++) {
- if (buf[i] != refbuf[offs+i]) {
- printf(" mismatch at offs %i\n", offs);
- }
- TEST_CHECK(buf[i] == refbuf[offs+i]);
- }
- offs += sizeof(buf);
- res = SPIFFS_lseek(FS, fd, -((u32_t)sizeof(buf)+11), SPIFFS_SEEK_CUR);
- TEST_CHECK(res >= 0);
- offs -= (sizeof(buf)+11);
- res = SPIFFS_read(FS, fd, buf, sizeof(buf));
- TEST_CHECK(res >= 0);
- for (i = 0; i < sizeof(buf); i++) {
- if (buf[i] != refbuf[offs+i]) {
- printf(" mismatch at offs %i\n", offs);
- }
- TEST_CHECK(buf[i] == refbuf[offs+i]);
- }
- offs += sizeof(buf);
- }
- free(refbuf);
- SPIFFS_close(FS, fd);
- return TEST_RES_OK;
- }
- TEST_END(lseek_read)
- TEST(write_small_file_chunks_1)
- {
- int res = test_create_and_write_file("smallfile", 256, 1);
- TEST_CHECK(res >= 0);
- res = read_and_verify("smallfile");
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(write_small_file_chunks_1)
- TEST(write_small_files_chunks_1)
- {
- char name[32];
- int f;
- int size = 512;
- int files = ((20*(FS)->cfg.phys_size)/100)/size;
- int res;
- for (f = 0; f < files; f++) {
- sprintf(name, "smallfile%i", f);
- res = test_create_and_write_file(name, size, 1);
- TEST_CHECK(res >= 0);
- }
- for (f = 0; f < files; f++) {
- sprintf(name, "smallfile%i", f);
- res = read_and_verify(name);
- TEST_CHECK(res >= 0);
- }
- return TEST_RES_OK;
- }
- TEST_END(write_small_files_chunks_1)
- TEST(write_big_file_chunks_1)
- {
- int size = ((50*(FS)->cfg.phys_size)/100);
- printf(" filesize %i\n", size);
- int res = test_create_and_write_file("bigfile", size, 1);
- TEST_CHECK(res >= 0);
- res = read_and_verify("bigfile");
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(write_big_file_chunks_1)
- TEST(write_big_files_chunks_1)
- {
- char name[32];
- int f;
- int files = 10;
- int res;
- int size = ((50*(FS)->cfg.phys_size)/100)/files;
- printf(" filesize %i\n", size);
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = test_create_and_write_file(name, size, 1);
- TEST_CHECK(res >= 0);
- }
- for (f = 0; f < files; f++) {
- sprintf(name, "bigfile%i", f);
- res = read_and_verify(name);
- TEST_CHECK(res >= 0);
- }
- return TEST_RES_OK;
- }
- TEST_END(write_big_files_chunks_1)
- TEST(long_run_config_many_small_one_long)
- {
- tfile_conf cfgs[] = {
- { .tsize = LARGE, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = LONG
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = LONG
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = LONG
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = LONG
- },
- };
- int res = run_file_config(sizeof(cfgs)/sizeof(cfgs[0]), &cfgs[0], 206, 5, 0);
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(long_run_config_many_small_one_long)
- TEST(long_run_config_many_medium)
- {
- tfile_conf cfgs[] = {
- { .tsize = MEDIUM, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = LARGE, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = LARGE, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = LARGE, .ttype = MODIFIED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = MEDIUM, .ttype = MODIFIED, .tlife = LONG
- },
- };
- int res = run_file_config(sizeof(cfgs)/sizeof(cfgs[0]), &cfgs[0], 305, 5, 0);
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(long_run_config_many_medium)
- TEST(long_run_config_many_small)
- {
- tfile_conf cfgs[] = {
- { .tsize = SMALL, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = LONG
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = MODIFIED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = SHORT
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = UNTAMPERED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = SHORT
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = MEDIUM
- },
- { .tsize = EMPTY, .ttype = UNTAMPERED, .tlife = SHORT
- },
- };
- int res = run_file_config(sizeof(cfgs)/sizeof(cfgs[0]), &cfgs[0], 115, 6, 0);
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(long_run_config_many_small)
- TEST(long_run)
- {
- tfile_conf cfgs[] = {
- { .tsize = EMPTY, .ttype = APPENDED, .tlife = MEDIUM
- },
- { .tsize = SMALL, .ttype = REWRITTEN, .tlife = SHORT
- },
- { .tsize = MEDIUM, .ttype = MODIFIED, .tlife = SHORT
- },
- { .tsize = MEDIUM, .ttype = APPENDED, .tlife = SHORT
- },
- };
- int macro_runs = 500;
- printf(" ");
- u32_t clob_size = SPIFFS_CFG_PHYS_SZ(FS)/4;
- int res = test_create_and_write_file("long_clobber", clob_size, clob_size);
- TEST_CHECK(res >= 0);
- res = read_and_verify("long_clobber");
- TEST_CHECK(res >= 0);
- while (macro_runs--) {
- //printf(" ---- run %i ----\n", macro_runs);
- if ((macro_runs % 20) == 0) {
- printf(".");
- fflush(stdout);
- }
- res = run_file_config(sizeof(cfgs)/sizeof(cfgs[0]), &cfgs[0], 11, 2, 0);
- TEST_CHECK(res >= 0);
- }
- printf("\n");
- res = read_and_verify("long_clobber");
- TEST_CHECK(res >= 0);
- res = SPIFFS_check(FS);
- TEST_CHECK(res >= 0);
- return TEST_RES_OK;
- }
- TEST_END(long_run)
- SUITE_END(hydrogen_tests)
|