Changeset d8a2e92 in network-demos


Ignore:
Timestamp:
Dec 14, 2000, 2:16:08 PM (18 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.11, master, network-demos-4-10-branch, network-demos-4-6-branch, network-demos-4-7-branch, network-demos-4-8-branch, network-demos-4-9-branch
Children:
d37a99d
Parents:
3ba2f22
Message:

2000-12-14 Eric Norum <eric.norum@…>

  • init.c, test.c: Added test of write capability.
Location:
tftpTest
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • tftpTest/ChangeLog

    r3ba2f22 rd8a2e92  
     12000-12-14      Eric Norum <eric.norum@usask.ca>
     2
     3        * init.c, test.c: Added test of write capability.
     4
    152000-12-14      Joel Sherrill <joel@OARcorp.com>
    26
  • tftpTest/init.c

    r3ba2f22 rd8a2e92  
    1818#include <bsp.h>
    1919#include <rtems/tftp.h>
     20
     21#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 20
     22#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
    2023
    2124#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER
     
    4750#include "../networkconfig.h"
    4851
     52void testTFTP (const char *hostname, const char *filename);
     53
    4954/*
    5055 * RTEMS Startup Task
     
    5863        rtems_bsdnet_initialize_tftp_filesystem ();
    5964
    60 #if (defined (RTEMS_USE_BOOTP))
    61         hostname = inet_ntoa (rtems_bsdnet_bootp_server_address);
    62         filename = rtems_bsdnet_bootp_boot_file_name;
    63 #else
    6465        hostname = RTEMS_TFTP_TEST_HOST_NAME;
    6566        filename = RTEMS_TFTP_TEST_FILE_NAME;
    66 #endif
    6767
    6868        testTFTP (hostname, filename);
  • tftpTest/test.c

    r3ba2f22 rd8a2e92  
    2323#include <sys/fcntl.h>
    2424#include <unistd.h>
     25#include <malloc.h>
    2526
    2627static char cbuf[1024];
    27 static char *fullname;
     28static char *readName, *writeName;
    2829static rtems_interval then, now;
    2930
    3031static void
    31 showRate (unsigned long totalRead)
     32showRate (unsigned long byteCount)
    3233{
    3334        int elapsed;
    3435
    35         printf ("Read %lu bytes", totalRead);
     36        printf ("Transferred %lu bytes", byteCount);
    3637        elapsed = now - then;
    3738        if (elapsed) {
     
    3940                rtems_clock_get (RTEMS_CLOCK_GET_TICKS_PER_SECOND, &ticksPerSecond);
    4041                printf (" (%ld bytes/sec)",
    41                                 (long)(((long long)totalRead * ticksPerSecond)
     42                                (long)(((long long)byteCount * ticksPerSecond)
    4243                                                                / elapsed));
    4344        }
     
    5253        unsigned long totalRead = 0;
    5354
    54         fd = open (fullname, O_RDONLY);
     55        fd = open (readName, O_RDONLY);
    5556        if (fd < 0) {
    5657                printf ("Open failed: %s\n", strerror (errno));
     
    8283        unsigned long totalRead = 0;
    8384
    84         fp = fopen (fullname, "r");
     85        fp = fopen (readName, "r");
    8586        if (fp == NULL) {
    8687                printf ("Open failed: %s\n", strerror (errno));
     
    105106}
    106107
    107 static int
    108 makeFullname (const char *hostname, const char *file)
     108static void
     109testRawWrite (void)
     110{
     111        int fd;
     112        int nwrite;
     113        unsigned long totalWrite = 0;
     114
     115        fd = open (writeName, O_WRONLY|O_CREAT);
     116        if (fd < 0) {
     117                printf ("Open failed: %s\n", strerror (errno));
     118                return;
     119        }
     120
     121        rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &then);
     122        while (totalWrite < (100 * 1024)) {
     123                nwrite = write (fd, cbuf, sizeof cbuf);
     124                if (nwrite != sizeof cbuf) {
     125                        printf ("Write failed: %s\n", strerror (errno));
     126                        close (fd);
     127                        return;
     128                }
     129                totalWrite += nwrite;
     130        }
     131        rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &now);
     132        close (fd);
     133        showRate (totalWrite);
     134}
     135
     136static void
     137testFwrite (void)
     138{
     139        FILE *fp;
     140        int nwrite;
     141        unsigned long totalWrite = 0;
     142
     143        fp = fopen (writeName, "w");
     144        if (fp == NULL) {
     145                printf ("Open failed: %s\n", strerror (errno));
     146                return;
     147        }
     148
     149        rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &then);
     150        while (totalWrite < (100 * 1024)) {
     151                nwrite = fwrite (cbuf, sizeof cbuf[0], sizeof cbuf, fp);
     152                if (nwrite != sizeof cbuf) {
     153                        printf ("Write failed: %s\n", strerror (errno));
     154                        fclose (fp);
     155                        return;
     156                }
     157                totalWrite += nwrite;
     158        }
     159        rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &now);
     160        fclose (fp);
     161        showRate (totalWrite);
     162}
     163
     164static void
     165testFcopy (void)
     166{
     167        FILE *fin, *fout;
     168        int nread, nwrite;
     169        unsigned long totalRead = 0;
     170
     171        fin = fopen (readName, "r");
     172        if (fin == NULL) {
     173                printf ("Open (%s) failed: %s\n", readName, strerror (errno));
     174                return;
     175        }
     176        fout = fopen (writeName, "w");
     177        if (fout == NULL) {
     178                printf ("Open (%s) failed: %s\n", writeName, strerror (errno));
     179                fclose (fin);
     180                return;
     181        }
     182
     183        rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &then);
     184        for (;;) {
     185                nread = fread (cbuf, sizeof cbuf[0], sizeof cbuf, fin);
     186                if (nread < 0) {
     187                        printf ("Read failed: %s\n", strerror (errno));
     188                        fclose (fin);
     189                        fclose (fout);
     190                        return;
     191                }
     192                if (nread == 0)
     193                        break;
     194                nwrite = fwrite (cbuf, sizeof cbuf[0], nread, fout);
     195                if (nwrite != nread) {
     196                        printf ("Write failed: %s\n", strerror (errno));
     197                        fclose (fin);
     198                        fclose (fout);
     199                        return;
     200                }
     201                totalRead += nread;
     202        }
     203        rtems_clock_get (RTEMS_CLOCK_GET_TICKS_SINCE_BOOT, &now);
     204        fclose (fin);
     205        fclose (fout);
     206        showRate (totalRead);
     207}
     208
     209static void
     210makeFullName (const char *hostname, const char *file, int flags)
    109211{
    110212        if (hostname == NULL)
    111213                hostname = "";
    112         fullname = realloc (fullname, 8 + strlen (file) + strlen (hostname));
    113         sprintf (fullname, "/TFTP/%s/%s", hostname, file);
    114         printf ("Read `%s'.\n", fullname);
    115         return 1;
     214        if ((flags == O_RDONLY) || (flags == O_RDWR)) {
     215                readName = realloc (readName, 8 + strlen (file) + strlen (hostname));
     216                sprintf (readName, "/TFTP/%s/%s", hostname, file);
     217                printf ("Read `%s'.\n", readName);
     218        }
     219        if ((flags == O_WRONLY) || (flags == O_RDWR)) {
     220                writeName = realloc (writeName, 12 + strlen (file) + strlen (hostname));
     221                sprintf (writeName, "/TFTP/%s/%s.tmp", hostname, file);
     222                printf ("Write `%s'.\n", writeName);
     223        }
    116224}
    117225
     
    119227testTFTP (const char *hostname, const char *filename)
    120228{
    121         /*
    122          * Check that invalid file names are reported as such
    123          */
    124         if (makeFullname (hostname, "")) {
    125                 testRawRead ();
    126                 testFread ();
    127         }
    128 
    129         /*
    130          * Check that non-existent files are reported as such
    131          */
    132         if (makeFullname (hostname, "BAD-FILE-NAME")) {
    133                 testRawRead ();
    134                 testFread ();
    135         }
    136 
    137         /*
    138          * Check that read works
    139          */
    140         if (makeFullname (hostname, filename)) {
    141                 testRawRead ();
    142                 testFread ();
    143         }
    144 }
     229        printf ("*** Check that invalid file names are reported as such.\n");
     230        makeFullName (hostname, "", O_RDONLY);
     231        testRawRead ();
     232        testFread ();
     233
     234        printf ("*** Check that non-existent files are reported as such.\n");
     235        makeFullName (hostname, "BAD-FILE-NAME", O_RDONLY);
     236        testRawRead ();
     237        testFread ();
     238
     239        printf ("*** Check that file read operations work.\n");
     240        makeFullName (hostname, filename, O_RDONLY);
     241        testRawRead ();
     242        testFread ();
     243
     244        printf ("*** Check that file write operations work.\n");
     245        makeFullName (hostname, filename, O_WRONLY);
     246        testRawWrite ();
     247        testFwrite ();
     248
     249        printf ("*** Check that file copy operations work.\n");
     250        makeFullName (hostname, filename, O_RDWR);
     251        testFcopy ();
     252}
Note: See TracChangeset for help on using the changeset viewer.