Написал генератор json сейчас информация только по 0x00000000, 0xFFFFFFFF, 0xAAAAAAAA, 0x55555555 но это божет не работать без -t
This commit is contained in:
parent
cd842d8c05
commit
bf32765ea9
8 changed files with 3929 additions and 203 deletions
153
multi_tred.h
153
multi_tred.h
|
|
@ -1,89 +1,102 @@
|
|||
void fill_pattern(uint32_t *buf, size_t words, uint32_t pattern) {
|
||||
for (size_t i = 0; i < words; i++) {
|
||||
buf[i] = pattern;
|
||||
}
|
||||
}
|
||||
#pragma once
|
||||
#include <time.h>
|
||||
|
||||
void fill_increment(uint32_t *buf, size_t words) {
|
||||
for (size_t i = 0; i < words; i++) {
|
||||
buf[i] = (uint32_t)i;
|
||||
int one_percent_chance(){
|
||||
static int initialized = 0;
|
||||
if (!initialized) {
|
||||
srand((unsigned int)time(NULL));
|
||||
initialized = 1;
|
||||
}
|
||||
return (rand() % 1000000) == 0;
|
||||
}
|
||||
int check_pattern(uint32_t *buf, size_t words, uint32_t pattern) {
|
||||
int errors = 0;
|
||||
for (size_t i = 0; i < words; i++) {
|
||||
if (buf[i] != pattern) {
|
||||
printf("\nОшибка в тесте %zu: должен быть: 0x%08X, фактический: 0x%08X\n", i, pattern, buf[i]);
|
||||
errors++;
|
||||
if (errors > 10) break;
|
||||
}
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
int a =1;
|
||||
void* fill_pattern_multi_tred(void *arg) {
|
||||
struct tred_pizdec* meta = (struct tred_pizdec*) arg;
|
||||
DEBUG_PRINT("id: 0x%08X\n", test_patterns[meta->id]);
|
||||
if (meta->test_tip == 1){
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++) {
|
||||
meta->mem[i] = test_patterns[meta->id];
|
||||
}
|
||||
switch (meta->test_tip){
|
||||
case 1:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++){
|
||||
if (a && i % 1000 == 0 && one_percent_chance()) {
|
||||
meta->mem[i] = 45345345;
|
||||
}
|
||||
else
|
||||
meta->mem[i] = test_patterns[meta->id];
|
||||
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++)
|
||||
meta->mem[i] = (uint32_t)i;
|
||||
break;
|
||||
case 3:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++)
|
||||
meta->mem[i] = 1U << (i % 32);
|
||||
break;
|
||||
case 4:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++)
|
||||
meta->mem[i] = ~(1U << (i % 32));
|
||||
break;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
void* check_pattern_multi_tred(void *arg) {
|
||||
struct tred_pizdec* meta = (struct tred_pizdec*) arg;
|
||||
meta->return_error = 0;
|
||||
if (meta->test_tip == 1){
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++){
|
||||
if (meta->mem[i] != test_patterns[meta->id]) {
|
||||
printf("\nОшибка в тесте %zu: должен быть: 0x%08X, фактический: 0x%08X\n", i, test_patterns[meta->id], meta->mem[i]);
|
||||
meta->return_error++;
|
||||
if (meta->return_error > 10) break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (meta->test_tip == 2){
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++) {
|
||||
if (meta->mem[i] != (uint32_t)i) {
|
||||
printf("Ошибка в тесте %zu: должен быть: 0x%08X, фактический: 0x%08X\n", i, (uint32_t)i, meta->mem[i]);
|
||||
meta->return_error++;
|
||||
if (meta->return_error > 10) break;
|
||||
switch (meta->test_tip){
|
||||
case 1:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++){
|
||||
if (meta->mem[i] != test_patterns[meta->id]) {
|
||||
if (args.json){
|
||||
struct error_info* error_str = malloc(sizeof(struct error_info));
|
||||
error_str->expected = test_patterns[meta->id];
|
||||
error_str->actual = meta->mem[i];
|
||||
error_str->error_adres = meta->mem[i];
|
||||
if (!meta->test_stats->test_local_stats[meta->id]->error_int){
|
||||
if (meta->test_stats->test_local_stats[meta->id] != NULL){
|
||||
|
||||
}
|
||||
meta->test_stats->test_local_stats[meta->id]->error_info = error_str;
|
||||
}
|
||||
else
|
||||
meta->test_stats->test_local_stats[meta->id]->error_info_end->error_info_next = error_str;
|
||||
meta->test_stats->test_local_stats[meta->id]->error_info_end = error_str;
|
||||
}
|
||||
else{
|
||||
printf("\nОшибка в тесте %zu: должен быть: 0x%08X, фактический: 0x%08X\n", i, test_patterns[meta->id], meta->mem[i]);
|
||||
}
|
||||
meta->test_stats->test_local_stats[meta->id]->error_int++;
|
||||
if (meta->return_error > 10) break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++) {
|
||||
if (meta->mem[i] != (uint32_t)i) {
|
||||
printf("\nОшибка в тесте %zu: должен быть: 0x%08X, фактический: 0x%08X\n", i, (uint32_t)i, meta->mem[i]);
|
||||
meta->return_error++;
|
||||
if (meta->return_error > 10) break;
|
||||
}
|
||||
//printf("Адрес памяти: %p\n", (void*)meta->mem[i]);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++) {
|
||||
if (meta->mem[i] != 1U << (i % 32)){
|
||||
printf("\nПиздец_3\n");
|
||||
meta->return_error++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (size_t i = meta->words_start; i < meta->words_stop; i++) {
|
||||
if (meta->mem[i] != ~(1U << (i % 32))){
|
||||
printf("\nПиздец_4\n");
|
||||
meta->return_error++;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void fill_walking_ones(uint32_t *mem, size_t words) {
|
||||
for (size_t i = 0; i < words; i++) {
|
||||
mem[i] = 1U << (i % 32);
|
||||
}
|
||||
}
|
||||
int fill_walking_ones_test(uint32_t *mem, size_t words) {
|
||||
int errors = 0;
|
||||
for (size_t i = 0; i < words; i++) {
|
||||
if (mem[i] != 1U << (i % 32)){
|
||||
printf("\nПиздец\n");
|
||||
errors++;
|
||||
}
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
void fill_walking_zeros(uint32_t *mem, size_t words) {
|
||||
for (size_t i = 0; i < words; i++) {
|
||||
mem[i] = ~(1U << (i % 32));
|
||||
}
|
||||
}
|
||||
int fill_walking_zeros_test(uint32_t *mem, size_t words) {
|
||||
int errors = 0;
|
||||
for (size_t i = 0; i < words; i++) {
|
||||
if (mem[i] != ~(1U << (i % 32))){
|
||||
printf("\nПиздец\n");
|
||||
errors++;
|
||||
}
|
||||
}
|
||||
return errors;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue