Reworked the generator code into its own files.
authorBrian Aker <brian@tangent.org>
Sat, 29 Sep 2007 18:08:12 +0000 (11:08 -0700)
committerBrian Aker <brian@tangent.org>
Sat, 29 Sep 2007 18:08:12 +0000 (11:08 -0700)
src/Makefile.am
src/generator.c [new file with mode: 0644]
src/generator.h [new file with mode: 0644]
src/memslap.c

index 47e91aad6b2d1072191f9ddc8716d564a2cbdcf6..4a119db33278032fb63f13728677c02646613df8 100644 (file)
@@ -20,5 +20,5 @@ memrm_LDADD = $(LDADDS)
 memflush_SOURCES = memflush.c utilities.c
 memflush_LDADD = $(LDADDS)
 
-memslap_SOURCES = memslap.c utilities.c
+memslap_SOURCES = memslap.c utilities.c generator.c
 memslap_LDADD = $(LDADDS)
diff --git a/src/generator.c b/src/generator.c
new file mode 100644 (file)
index 0000000..df04d34
--- /dev/null
@@ -0,0 +1,67 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "generator.h"
+
+/* Use this for string generation */
+static const char ALPHANUMERICS[]=
+  "0123456789ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstuvwxyz";
+
+#define ALPHANUMERICS_SIZE (sizeof(ALPHANUMERICS)-1)
+
+static void get_random_string(char *buffer, size_t size)
+{
+  char *buffer_ptr= buffer;
+
+  while (--size)
+    *buffer_ptr++= ALPHANUMERICS[random() % ALPHANUMERICS_SIZE];
+  *buffer_ptr++= ALPHANUMERICS[random() % ALPHANUMERICS_SIZE];
+}
+
+void pairs_free(pairs_st *pairs)
+{
+  unsigned int x;
+
+  /* We free until we hit the null pair we stores during creation */
+  for (x= 0; pairs[x].key; x++)
+  {
+    free(pairs[x].key);
+    free(pairs[x].value);
+  }
+
+  free(pairs);
+}
+
+pairs_st *pairs_generate(unsigned long long number_of)
+{
+  unsigned int x;
+  pairs_st *pairs;
+
+  pairs= (pairs_st*)malloc(sizeof(pairs_st) * (number_of+1));
+
+  if (!pairs)
+    goto error;
+
+  memset(pairs, 0, sizeof(pairs_st) * (number_of+1));
+
+  for (x= 0; x < number_of; x++)
+  {
+    pairs[x].key= (char *)malloc(sizeof(char) * 100);
+    if (!pairs[x].key)
+      goto error;
+    get_random_string(pairs[x].key, 100);
+    pairs[x].key_length= 100;
+
+    pairs[x].value= (char *)malloc(sizeof(char) * 400);
+    if (!pairs[x].value)
+      goto error;
+    get_random_string(pairs[x].value, 400);
+    pairs[x].value_length= 400;
+  }
+
+  return pairs;
+error:
+    fprintf(stderr, "Memory Allocation failure in pairs_generate.\n");
+    exit(0);
+}
diff --git a/src/generator.h b/src/generator.h
new file mode 100644 (file)
index 0000000..c1c37f5
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+  Code to generate data to be pushed into memcached
+*/
+
+typedef struct pairs_st pairs_st;
+
+struct pairs_st {
+  char *key;
+  size_t key_length;
+  char *value;
+  size_t value_length;
+};
+
+pairs_st *pairs_generate(unsigned long long number_of);
+void pairs_free(pairs_st *pairs);
+static void get_random_string(char *buffer, size_t size);
index 661790ab8de49eeade4a8388f6fda02d212c3662..216506d88b26625bdc38521a34a64f77a7d0e63e 100644 (file)
 
 #include "client_options.h"
 #include "utilities.h"
+#include "generator.h"
 
 
-/* Use this for string generation */
-static const char ALPHANUMERICS[]=
-  "0123456789ABCDEFGHIJKLMNOPQRSTWXYZabcdefghijklmnopqrstuvwxyz";
-
-#define ALPHANUMERICS_SIZE (sizeof(ALPHANUMERICS)-1)
-
 /* Types */
-typedef struct pairs_st pairs_st;
 typedef struct conclusions_st conclusions_st;
 
 struct conclusions_st {
@@ -31,18 +25,8 @@ struct conclusions_st {
   unsigned int rows_read;
 };
 
-struct pairs_st {
-  char *key;
-  size_t key_length;
-  char *value;
-  size_t value_length;
-};
-
 /* Prototypes */
 void options_parse(int argc, char *argv[]);
-static pairs_st *pairs_generate(void);
-static void pairs_free(pairs_st *pairs);
-static void get_random_string(char *buffer, size_t size);
 void conclusions_print(conclusions_st *conclusion);
 
 static int opt_verbose= 0;
@@ -70,7 +54,7 @@ int main(int argc, char *argv[])
 
   parse_opt_servers(memc, opt_servers);
 
-  pairs= pairs_generate();
+  pairs= pairs_generate(opt_default_pairs);
 
 
   gettimeofday(&start_time, NULL);
@@ -172,50 +156,6 @@ void options_parse(int argc, char *argv[])
   }
 }
 
-static void pairs_free(pairs_st *pairs)
-{
-  unsigned int x;
-
-  for (x= 0; x < opt_default_pairs; x++)
-  {
-    free(pairs[x].key);
-    free(pairs[x].value);
-  }
-
-  free(pairs);
-}
-
-static pairs_st *pairs_generate(void)
-{
-  unsigned int x;
-  pairs_st *pairs;
-
-  pairs= (pairs_st*)malloc(sizeof(pairs_st) * opt_default_pairs);
-
-  if (!pairs)
-    goto error;
-
-  for (x= 0; x < opt_default_pairs; x++)
-  {
-    pairs[x].key= (char *)malloc(sizeof(char) * 100);
-    if (!pairs[x].key)
-      goto error;
-    get_random_string(pairs[x].key, 100);
-    pairs[x].key_length= 100;
-
-    pairs[x].value= (char *)malloc(sizeof(char) * 400);
-    if (!pairs[x].value)
-      goto error;
-    get_random_string(pairs[x].value, 400);
-    pairs[x].value_length= 400;
-  }
-
-  return pairs;
-error:
-    fprintf(stderr, "Memory Allocation failure in pairs_generate.\n");
-    exit(0);
-}
-
 void conclusions_print(conclusions_st *conclusion)
 {
   printf("\tLoaded %u rows\n", conclusion->rows_loaded);
@@ -225,12 +165,3 @@ void conclusions_print(conclusions_st *conclusion)
   printf("\tTook %ld.%03ld seconds to read data\n", conclusion->read_time / 1000, 
          conclusion->read_time % 1000);
 }
-
-static void get_random_string(char *buffer, size_t size)
-{
-  char *buffer_ptr= buffer;
-
-  while (--size)
-    *buffer_ptr++= ALPHANUMERICS[random() % ALPHANUMERICS_SIZE];
-  *buffer_ptr++= ALPHANUMERICS[random() % ALPHANUMERICS_SIZE];
-}