diff --git a/Makefile b/Makefile
index 732f498936..96bb1a72e6 100644
--- a/Makefile
+++ b/Makefile
@@ -15,7 +15,7 @@
 # Threading:
 # * -DUPB_THREAD_UNSAFE: remove all thread-safety.
 
-.PHONY: all lib clean tests test benchmarks benchmark descriptorgen
+.PHONY: all lib clean tests test benchmark descriptorgen
 .PHONY: clean_leave_profile
 
 # Prevents the deletion of intermediate files.
@@ -29,7 +29,7 @@ UPB_PICLIBS = $(patsubst %,lib/lib%_pic.a,$(UPB_MODULES))
 default: $(UPB_LIBS)
 
 # All: build absolutely everything
-all: lib tests benchmarks tools/upbc lua python
+all: lib tests tools/upbc lua python
 testall: test pythontest
 
 # Set this to have user-specific flags (especially things like -O0 and -g).
@@ -85,7 +85,7 @@ dep:
 
 clean_leave_profile:
 	@rm -rf obj lib
-	@rm -f benchmarks/*.pb* benchmarks/google_message?.h
+	@rm -f tests/*.pb* tests/google_message?.h
 	@rm -f $(TESTS) tests/testmain.o tests/t.*
 	@rm -f upb/descriptor.pb
 	@rm -rf tools/upbc deps
@@ -309,7 +309,7 @@ GOOGLEPB_LIB=lib/libupb.bindings.googlepb.a
 clean: clean_googlepb
 clean_googlepb:
 	@rm -f tests/bindings/googlepb/test_vs_proto2.googlemessage*
-	@rm -f benchmarks/googlemessage?.h
+	@rm -f tests/googlemessage?.h
 	@rm -f $(GOOGLEPB_LIB)
 
 googlepb: default $(GOOGLEPB_LIB)
@@ -320,19 +320,19 @@ lib/libupb.bindings.googlepb.a: $(upb_bindings_googlepb_SRCS:upb/%.cc=obj/%.o)
 	$(Q) mkdir -p lib && ar rcs $@ $^
 
 # Generate C++ with Google's protobuf compiler, to test and benchmark against.
-benchmarks/google_messages.proto.pb: benchmarks/google_messages.proto
+tests/google_messages.proto.pb: tests/google_messages.proto
 	@# TODO: replace with upbc.
-	protoc benchmarks/google_messages.proto -obenchmarks/google_messages.proto.pb
-benchmarks/google_messages.pb.cc: benchmarks/google_messages.proto
-	protoc benchmarks/google_messages.proto --cpp_out=.
+	protoc tests/google_messages.proto -otests/google_messages.proto.pb
+tests/google_messages.pb.cc: tests/google_messages.proto
+	protoc tests/google_messages.proto --cpp_out=.
 
-benchmarks/google_message1.h:
-	$(E) XXD benchmarks/google_message1.dat
-	$(Q) xxd -i < benchmarks/google_message1.dat > benchmarks/google_message1.h
+tests/google_message1.h:
+	$(E) XXD tests/google_message1.dat
+	$(Q) xxd -i < tests/google_message1.dat > tests/google_message1.h
 
-benchmarks/google_message2.h:
-	$(E) XXD benchmarks/google_message2.dat
-	$(Q) xxd -i < benchmarks/google_message2.dat > benchmarks/google_message2.h
+tests/google_message2.h:
+	$(E) XXD tests/google_message2.dat
+	$(Q) xxd -i < tests/google_message2.dat > tests/google_message2.h
 
 GOOGLEPB_TEST_LIBS = \
   lib/libupb.bindings.googlepb.a \
@@ -342,29 +342,29 @@ GOOGLEPB_TEST_LIBS = \
 
 GOOGLEPB_TEST_DEPS = \
   tests/bindings/googlepb/test_vs_proto2.cc \
-  benchmarks/google_messages.proto.pb \
-  benchmarks/google_messages.pb.cc \
+  tests/google_messages.proto.pb \
+  tests/google_messages.pb.cc \
   tests/testmain.o \
   $(GOOGLEPB_TEST_LIBS)
 
 tests/bindings/googlepb/test_vs_proto2.googlemessage1: $(GOOGLEPB_TEST_DEPS) \
-    benchmarks/google_message1.h \
-    benchmarks/google_message2.h
+    tests/google_message1.h \
+    tests/google_message2.h
 	$(E) CXX $< '(benchmarks::SpeedMessage1)'
 	$(Q) $(CXX) $(OPT) $(WARNFLAGS) $(CPPFLAGS) $(CXXFLAGS) -o $@ $< \
 	  -DMESSAGE_CIDENT="benchmarks::SpeedMessage1" \
 	  -DMESSAGE_DATA_IDENT=message1_data \
-	  benchmarks/google_messages.pb.cc tests/testmain.o -lprotobuf -lpthread \
+	  tests/google_messages.pb.cc tests/testmain.o -lprotobuf -lpthread \
 	  $(GOOGLEPB_TEST_LIBS)
 
 tests/bindings/googlepb/test_vs_proto2.googlemessage2: $(GOOGLEPB_TEST_DEPS) \
-    benchmarks/google_message1.h \
-    benchmarks/google_message2.h
+    tests/google_message1.h \
+    tests/google_message2.h
 	$(E) CXX $< '(benchmarks::SpeedMessage2)'
 	$(Q) $(CXX) $(OPT) $(WARNFLAGS) $(CPPFLAGS) $(CXXFLAGS) -o $@ $< \
 	  -DMESSAGE_CIDENT="benchmarks::SpeedMessage2" \
 	  -DMESSAGE_DATA_IDENT=message2_data \
-	  benchmarks/google_messages.pb.cc tests/testmain.o -lprotobuf -lpthread \
+	  tests/google_messages.pb.cc tests/testmain.o -lprotobuf -lpthread \
 	  $(GOOGLEPB_TEST_LIBS)
 
 
diff --git a/benchmarks/getgraphs.py b/benchmarks/getgraphs.py
deleted file mode 100644
index aacf6b2d19..0000000000
--- a/benchmarks/getgraphs.py
+++ /dev/null
@@ -1,35 +0,0 @@
-
-import sys
-
-benchmarks = {}
-color_map = {'proto2_compiled': 'FF0000',
-             'proto2_table': 'FF00FF',
-             'upb_table_byref': '0000FF',
-             'upb_table_byval': '00FF00'}
-for line in sys.stdin:
-  name, val = line.split(': ')
-  components = name.split('_')
-  benchmark = '_'.join(components[1:3])
-  variant = '_'.join(components[3:])
-  if benchmark not in benchmarks:
-    benchmarks[benchmark] = []
-  benchmarks[benchmark].append((variant, int(val)))
-
-def encode(x):
-  digits = (range(ord("A"), ord("Z")+1) + range(ord("a"), ord("z")+1) +
-            range(ord("0"), ord("9")+1) + [ord("."), ord("-")])
-  return chr(digits[x / 64]) + chr(digits[x % 64])
-
-for benchmark, values in benchmarks.items():
-  def cmp(a, b):
-    return b[1] - a[1]
-  values.sort(cmp)
-  variants = [x[0] for x in values]
-  values = [x[1] for x in values]
-  scaling = 400
-  encoded_values = [encode((x * 4096 / scaling) - 1) for x in values]
-  legend = "chdl=%s" % ("|".join(variants))
-  colors = "chco=%s" % ("|".join([color_map[x] for x in variants]))
-  data = "chd=e:%s" % ("".join(encoded_values))
-  url = "http://chart.apis.google.com/chart?cht=bhs&chs=500x200&chtt=%s+(MB/s)&chxt=x&chxr=0,0,%d&%s" % (benchmark, scaling, "&".join([legend, data, colors]))
-  print url
diff --git a/benchmarks/main.c b/benchmarks/main.c
deleted file mode 100644
index 3d98a05efa..0000000000
--- a/benchmarks/main.c
+++ /dev/null
@@ -1,55 +0,0 @@
-
-#include <stdbool.h>
-#include <time.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <string.h>
-
-/* Cycle between a bunch of different messages, to avoid performance
- * variations due to memory effects of a particular allocation pattern. */
-#ifndef NUM_MESSAGES
-#define NUM_MESSAGES 32
-#endif
-
-static bool initialize();
-static void cleanup();
-static size_t run(int i);
-
-int main (int argc, char *argv[])
-{
-  (void)argc;
-
-  /* Change cwd to where the binary is. */
-  char *lastslash = strrchr(argv[0], '/');
-  char *progname = argv[0];
-  if(lastslash) {
-    *lastslash = '\0';
-    if(chdir(argv[0]) < 0) {
-      fprintf(stderr, "Error changing directory to %s.\n", argv[0]);
-      return 1;
-    }
-    *lastslash = '/';
-    progname = lastslash + 3;  /* "/b_" */
-  }
-
-  if(!initialize()) {
-    fprintf(stderr, "%s: failed to initialize\n", argv[0]);
-    return 1;
-  }
-
-  size_t total_bytes = 0;
-  clock_t before = clock();
-  for(int i = 0; true; i++) {
-    if((i & 0xFF) == 0 && (clock() - before > CLOCKS_PER_SEC)) break;
-    size_t bytes = run(i);
-    if(bytes == 0) {
-      fprintf(stderr, "%s: failed.\n", argv[0]);
-      return 2;
-    }
-    total_bytes += bytes;
-  }
-  double elapsed = ((double)clock() - before) / CLOCKS_PER_SEC;
-  printf("%s:%d\n", progname, (int)(total_bytes / elapsed / (1 << 20)));
-  cleanup();
-  return 0;
-}
diff --git a/benchmarks/parsestream.upb.c b/benchmarks/parsestream.upb.c
deleted file mode 100644
index 2c5f943480..0000000000
--- a/benchmarks/parsestream.upb.c
+++ /dev/null
@@ -1,94 +0,0 @@
-
-#include "main.c"
-
-#include <stdlib.h>
-#include "upb/bytestream.h"
-#include "upb/def.h"
-#include "upb/pb/decoder.h"
-#include "upb/pb/glue.h"
-
-static char *input_str;
-static size_t input_len;
-static const upb_msgdef *def;
-upb_pipeline pipeline;
-static upb_sink *sink;
-
-static void *startsubmsg(void *closure, const void *hd) {
-  UPB_UNUSED(closure);
-  UPB_UNUSED(hd);
-  return input_str;
-}
-
-void onmreg(void *c, upb_handlers *h) {
-  UPB_UNUSED(c);
-  upb_msg_iter i;
-  upb_msg_begin(&i, upb_handlers_msgdef(h));
-  for(; !upb_msg_done(&i); upb_msg_next(&i)) {
-    const upb_fielddef *f = upb_msg_iter_field(&i);
-    if (upb_fielddef_type(f) == UPB_TYPE_MESSAGE) {
-      upb_handlers_setstartsubmsg(h, f, startsubmsg, NULL, NULL);
-    }
-  }
-}
-
-static bool initialize()
-{
-  // Initialize upb state, decode descriptor.
-  upb_status status = UPB_STATUS_INIT;
-  upb_symtab *s = upb_symtab_new(&s);
-  upb_load_descriptor_file_into_symtab(s, MESSAGE_DESCRIPTOR_FILE, &status);
-  if(!upb_ok(&status)) {
-    fprintf(stderr, "Error reading descriptor: %s\n",
-            upb_status_getstr(&status));
-    return false;
-  }
-
-  def = upb_dyncast_msgdef(upb_symtab_lookup(s, MESSAGE_NAME, &def));
-  if(!def) {
-    fprintf(stderr, "Error finding symbol '%s'.\n", MESSAGE_NAME);
-    return false;
-  }
-  upb_symtab_unref(s, &s);
-
-  // Read the message data itself.
-  input_str = upb_readfile(MESSAGE_FILE, &input_len);
-  if(input_str == NULL) {
-    fprintf(stderr, "Error reading " MESSAGE_FILE "\n");
-    return false;
-  }
-
-  // Cause all messages to be read, but do nothing when they are.
-  const upb_handlers* handlers =
-      upb_handlers_newfrozen(def, NULL, &handlers, &onmreg, NULL);
-  const upb_handlers* decoder_handlers =
-      upb_pbdecoder_gethandlers(handlers, JIT, &decoder_handlers);
-  upb_msgdef_unref(def, &def);
-
-  upb_pipeline_init(&pipeline, NULL, 0, upb_realloc, NULL);
-  upb_sink *s2 = upb_pipeline_newsink(&pipeline, handlers);
-  sink = upb_pipeline_newsink(&pipeline, decoder_handlers);
-  upb_pipeline_donateref(&pipeline, decoder_handlers, &decoder_handlers);
-  upb_pipeline_donateref(&pipeline, handlers, &handlers);
-  upb_pbdecoder *decoder = upb_sink_getobj(sink);
-  upb_pbdecoder_resetsink(decoder, s2);
-  return true;
-}
-
-static void cleanup()
-{
-  free(input_str);
-  upb_pipeline_uninit(&pipeline);
-}
-
-static size_t run(int i)
-{
-  (void)i;
-  upb_pipeline_reset(&pipeline);
-  if (!upb_bytestream_putstr(sink, input_str, input_len)) {
-    fprintf(stderr, "Decode error: %s",
-            upb_status_getstr(upb_pipeline_status(&pipeline)));
-    return 0;
-  }
-  return input_len;
-
-}
diff --git a/benchmarks/parsetoproto2.upb.cc b/benchmarks/parsetoproto2.upb.cc
deleted file mode 100644
index 20b63819dc..0000000000
--- a/benchmarks/parsetoproto2.upb.cc
+++ /dev/null
@@ -1,57 +0,0 @@
-// Tests speed of upb parsing into proto2 generated classes.
-
-#define __STDC_LIMIT_MACROS 1
-#include "main.c"
-
-#include <stdint.h>
-#include "upb/bytestream.h"
-#include "upb/def.h"
-#include "upb/pb/decoder.h"
-#include "upb/pb/glue.h"
-#include "upb/bindings/google/bridge.h"
-#include MESSAGE_HFILE
-
-const char *str;
-size_t len;
-MESSAGE_CIDENT msg[NUM_MESSAGES];
-upb::SeededPipeline<8192> pipeline(upb_realloc, NULL);
-upb::Sink *decoder_sink;
-upb::Sink *proto2_sink;
-
-static bool initialize()
-{
-  // Read the message data itself.
-  str = upb_readfile(MESSAGE_FILE, &len);
-  if(str == NULL) {
-    fprintf(stderr, "Error reading " MESSAGE_FILE "\n");
-    return false;
-  }
-
-  const upb::Handlers* h = upb::google::NewWriteHandlers(MESSAGE_CIDENT(), &h);
-  const upb::Handlers* h2 = upb::pb::GetDecoderHandlers(h, JIT, &h2);
-
-  proto2_sink = pipeline.NewSink(h);
-  decoder_sink = pipeline.NewSink(h2);
-  pipeline.DonateRef(h, &h);
-  pipeline.DonateRef(h2, &h2);
-
-  upb::pb::Decoder* d = decoder_sink->GetObject<upb::pb::Decoder>();
-  upb::pb::ResetDecoderSink(d, proto2_sink);
-
-  return true;
-}
-
-static void cleanup() {
-}
-
-static size_t run(int i) {
-  pipeline.Reset();
-  proto2_sink->Reset(&msg[i % NUM_MESSAGES]);
-  msg[i % NUM_MESSAGES].Clear();
-
-  if (!upb::PutStringToBytestream(decoder_sink, str, len)) {
-    fprintf(stderr, "Decode error: %s", pipeline.status().GetString());
-    return 0;
-  }
-  return len;
-}
diff --git a/benchmarks/parsetostruct.proto2_compiled.cc b/benchmarks/parsetostruct.proto2_compiled.cc
deleted file mode 100644
index 5b7c18ed65..0000000000
--- a/benchmarks/parsetostruct.proto2_compiled.cc
+++ /dev/null
@@ -1,37 +0,0 @@
-
-#include "main.c"
-#include MESSAGE_HFILE
-#include <string>
-#include <iostream>
-#include <sstream>
-#include <fstream>
-
-static std::string str;
-MESSAGE_CIDENT msg[NUM_MESSAGES];
-
-static bool initialize()
-{
-  // Read the message data itself. */
-  std::ifstream stream(MESSAGE_FILE);
-  if(!stream.is_open()) {
-    fprintf(stderr, "Error opening " MESSAGE_FILE ".\n");
-    return false;
-  }
-  std::stringstream stringstream;
-  stringstream << stream.rdbuf();
-  str = stringstream.str();
-  return true;
-}
-
-static void cleanup()
-{
-}
-
-static size_t run(int i)
-{
-  if(!msg[i%NUM_MESSAGES].ParsePartialFromString(str)) {
-    fprintf(stderr, "Error parsing with proto2.\n");
-    return 0;
-  }
-  return str.size();
-}
diff --git a/benchmarks/parsetostruct.proto2_table.cc b/benchmarks/parsetostruct.proto2_table.cc
deleted file mode 100644
index 83546aefd6..0000000000
--- a/benchmarks/parsetostruct.proto2_table.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#include "main.c"
-#include <google/protobuf/dynamic_message.h>
-#include <iostream>
-#include <sstream>
-#include <fstream>
-#include MESSAGE_HFILE
-
-static std::string str;
-static google::protobuf::DynamicMessageFactory factory;
-static google::protobuf::Message *msg[NUM_MESSAGES];
-
-static bool initialize()
-{
-  // Read the message data itself.
-  std::ifstream stream(MESSAGE_FILE);
-  if(!stream.is_open()) {
-    fprintf(stderr, "Error opening " MESSAGE_FILE ".\n");
-    return false;
-  }
-  std::stringstream stringstream;
-  stringstream << stream.rdbuf();
-  str = stringstream.str();
-
-  // Create the DynamicMessage.
-  const google::protobuf::Message *dynamic_msg_prototype =
-      factory.GetPrototype(MESSAGE_CIDENT::descriptor());
-  for(int i = 0; i < NUM_MESSAGES; i++)
-    msg[i] = dynamic_msg_prototype->New();
-  return true;
-}
-
-static void cleanup()
-{
-  for(int i = 0; i < NUM_MESSAGES; i++)
-    delete msg[i];
-}
-
-static size_t run(int i)
-{
-  if(!msg[i%NUM_MESSAGES]->ParsePartialFromString(str)) {
-    fprintf(stderr, "Error parsing with proto2.\n");
-    return 0;
-  }
-  return str.size();
-}
diff --git a/examples/example.proto b/examples/example.proto
deleted file mode 100644
index 231c455ca1..0000000000
--- a/examples/example.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-// upb - a minimalist implementation of protocol buffers.
-//
-// Copyright (c) 2011 Google Inc.  See LICENSE for details.
-// Author: Josh Haberman <jhaberman@gmail.com>
-//
-// A .proto file for the examples in this directory.
-
-package example;
-
-message SampleMessage {
-  optional string name = 1;
-  optional int32 id = 2;
-  optional string email = 3;
-}
diff --git a/examples/msg.c b/examples/msg.c
deleted file mode 100644
index 487e743602..0000000000
--- a/examples/msg.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * upb - a minimalist implementation of protocol buffers.
- *
- * Copyright (c) 2011 Google Inc.  See LICENSE for details.
- * Author: Josh Haberman <jhaberman@gmail.com>
- *
- * A simple example that demonstrates creating a standard message object
- * and parsing into it, using a dynamic reflection-based approach.
- *
- * Note that with this approach there are no strongly-typed struct or class
- * definitions to use from C -- this is essentially a reflection-based
- * interface.  Note that parsing and serializing are still very fast since
- * they are JIT-based.
- *
- * If this seems a bit verbose, you may prefer an approach that generates
- * strongly-typed struct definitions (upb will likely provide this, but it is
- * not yet implemented).
- *
- * TODO: make this file compiled as part of "make examples"
- * TODO: test that this actually works (WARNING: UNTESTED!)
- */
-
-#include "upb/msg.h"
-#include "upb/pb/glue.h"
-
-const char *descfile = "example.proto.pb";
-const char *type = "example.SampleMessage";
-const char *msgfile = "sample_message.pb";
-
-int main() {
-  // First we load the descriptor that describes the message into a upb_msgdef.
-  // This could come from a string that is compiled into the program or from a
-  // separate file as we do here.  Since defs always live in a symtab, we
-  // create one of those also.
-  upb_symtab *s = upb_symtab_new();
-  upb_status status = UPB_STATUS_INIT;
-  if (!upb_load_descriptor_file_into_symtab(s, descfile, &status)) {
-    fprintf(stderr, "Couldn't load descriptor file '%s': %s\n", descfile,
-            upb_status_getstr(&status));
-    return -1;
-  }
-
-  const upb_msgdef *md = upb_symtab_lookupmsg(s, type);
-  if (!md) {
-    fprintf(stderr, "Descriptor did not contain type '%s'\n", type);
-    return -1;
-  }
-
-  // Parse a file into a new message object.
-  void *msg = upb_filetonewmsg(msgfile, md, &status);
-  if (!msg) {
-    fprintf(stderr, "Error parsing message file '%s': %s\n", msgfile,
-            upb_status_getstr(&status));
-    return -1;
-  }
-
-  // TODO: Inspect some fields.
-  return 0;
-}
diff --git a/examples/stream_transcode.c b/examples/stream_transcode.c
deleted file mode 100644
index 21c375bce6..0000000000
--- a/examples/stream_transcode.c
+++ /dev/null
@@ -1,76 +0,0 @@
-
-#include <stdlib.h>
-#include "upb/bytestream.h"
-#include "upb/pb/decoder.h"
-#include "upb/pb/glue.h"
-#include "upb/pb/textprinter.h"
-
-int main(int argc, char *argv[]) {
-  if (argc < 3) {
-    fprintf(stderr, "Usage: stream_transcode <descfile> <msgname>\n");
-    return 1;
-  }
-
-  upb_symtab *symtab = upb_symtab_new();
-  size_t desc_len;
-  const char *desc = upb_readfile(argv[1], &desc_len);
-  if (!desc) {
-    fprintf(stderr, "Couldn't open descriptor file: %s\n", argv[1]);
-    return 1;
-  }
-
-  upb_status status = UPB_STATUS_INIT;
-  upb_load_descriptor_into_symtab(symtab, desc, desc_len, &status);
-  if (!upb_ok(&status)) {
-    fprintf(stderr, "Error parsing descriptor: %s", upb_status_getstr(&status));
-    return 1;
-  }
-  free((void*)desc);
-
-  const upb_def *md = upb_symtab_lookup(symtab, argv[2]);
-  if (!md) {
-    fprintf(stderr, "Descriptor did not contain message: %s\n", argv[2]);
-    return 1;
-  }
-
-  const upb_msgdef *m = upb_dyncast_msgdef_const(md);
-  if (!m) {
-    fprintf(stderr, "Def was not a msgdef.\n");
-    return 1;
-  }
-
-  upb_stdio in, out;
-  upb_stdio_init(&in);
-  upb_stdio_init(&out);
-  upb_stdio_reset(&in, stdin);
-  upb_stdio_reset(&out, stdout);
-
-  upb_handlers *handlers = upb_handlers_new();
-  upb_textprinter *p = upb_textprinter_new();
-  upb_textprinter_reset(p, upb_stdio_bytesink(&out), false);
-  upb_textprinter_reghandlers(handlers, m);
-
-  upb_decoder d;
-  upb_decoder_init(&d, handlers);
-  upb_decoder_reset(&d, upb_stdio_bytesrc(&in), 0, UPB_NONDELIMITED, p);
-
-  upb_status_clear(&status);
-  upb_decoder_decode(&d, &status);
-
-  if (!upb_ok(&status)) {
-    fprintf(stderr, "Error parsing input: %s", upb_status_getstr(&status));
-  }
-
-  upb_status_uninit(&status);
-  upb_stdio_uninit(&in);
-  upb_stdio_uninit(&out);
-  upb_decoder_uninit(&d);
-  upb_textprinter_free(p);
-  upb_def_unref(UPB_UPCAST(m));
-  upb_symtab_unref(symtab);
-
-  // Prevent C library from holding buffers open, so Valgrind doesn't see
-  // memory leaks.
-  fclose(stdin);
-  fclose(stdout);
-}
diff --git a/tests/bindings/googlepb/test_vs_proto2.cc b/tests/bindings/googlepb/test_vs_proto2.cc
index 6787deb588..c89339ae6b 100644
--- a/tests/bindings/googlepb/test_vs_proto2.cc
+++ b/tests/bindings/googlepb/test_vs_proto2.cc
@@ -18,7 +18,7 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
-#include "benchmarks/google_messages.pb.h"
+#include "tests/google_messages.pb.h"
 #include "tests/upb_test.h"
 #include "upb/bindings/googlepb/bridge.h"
 #include "upb/def.h"
@@ -27,14 +27,14 @@
 #include "upb/pb/glue.h"
 #include "upb/pb/varint.int.h"
 
-// Pull in string data from benchmarks/google_message{1,2}.dat
+// Pull in string data from tests/google_message{1,2}.dat
 // (the .h files are generated with xxd).
 const unsigned char message1_data[] = {
-#include "benchmarks/google_message1.h"
+#include "tests/google_message1.h"
 };
 
 const unsigned char message2_data[] = {
-#include "benchmarks/google_message2.h"
+#include "tests/google_message2.h"
 };
 
 void compare_metadata(const google::protobuf::Descriptor* d,
diff --git a/benchmarks/google_message1.dat b/tests/google_message1.dat
similarity index 100%
rename from benchmarks/google_message1.dat
rename to tests/google_message1.dat
diff --git a/benchmarks/google_message2.dat b/tests/google_message2.dat
similarity index 100%
rename from benchmarks/google_message2.dat
rename to tests/google_message2.dat
diff --git a/benchmarks/google_messages.proto b/tests/google_messages.proto
similarity index 100%
rename from benchmarks/google_messages.proto
rename to tests/google_messages.proto