diff --git a/newbrt/tests/dbufio-test-destroy.c b/newbrt/tests/dbufio-test-destroy.c
new file mode 100644
index 0000000000000000000000000000000000000000..9c745b4f28dc9980b2a05c7422dea82dda09c331
--- /dev/null
+++ b/newbrt/tests/dbufio-test-destroy.c
@@ -0,0 +1,92 @@
+#include "dbufio.h"
+#include <stdio.h>
+#include <fcntl.h>
+#include <toku_assert.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+
+enum { N  = 5 };
+enum { M = 10 };
+static void test1 (size_t chars_per_file, size_t bytes_per_read) {
+    int fds[N];
+    char fnames[N][100];
+    size_t n_read[N];
+    int still_live[N];
+    int n_live=N;
+    for (int i=0; i<N; i++) {
+	snprintf(fnames[i], 100, "dbufio-test-file%d.data", i);
+	unlink(fnames[i]);
+	fds[i] = open(fnames[i], O_CREAT|O_RDWR, S_IRWXU);
+	//printf("fds[%d]=%d is %s\n", i, fds[i], fnames[i]);
+	assert(fds[i]>=0);
+	n_read[i]=0;
+	still_live[i]=i;
+	for (size_t j=0; j<chars_per_file; j++) {
+	    unsigned char c = (i+j)%256;
+	    int r = toku_os_write(fds[i], &c, 1);
+	    if (r!=0) printf("fds[%d]=%d r=%d errno=%d (%s)\n", i, fds[i], r, errno, strerror(errno));
+	    assert(r==0);
+	}
+	{
+	    int r = lseek(fds[i], 0, SEEK_SET);
+	    assert(r==0);
+	}
+	
+    }
+    DBUFIO_FILESET bfs;
+    {
+	int r = create_dbufio_fileset(&bfs, N, fds, M);
+	assert(r==0);
+    }
+#if 0
+    while (n_live>0) {
+	int indirectnum = random()%n_live;
+	int filenum = still_live[indirectnum];
+	char buf[bytes_per_read];
+	size_t n_read_here=0;
+	int r = dbufio_fileset_read(bfs, filenum, buf, bytes_per_read, &n_read_here);
+	//printf("read(%d) -> %d (%ld) (old n_read=%ld)\n", filenum, r, n_read_here, n_read[filenum]);
+	if (r==0) {
+	    // did read something
+	    assert(n_read_here==bytes_per_read);
+	    n_read[filenum]+=n_read_here;
+	    //printf(" new n_read=%ld\n", n_read[filenum]);
+	    assert(n_read[filenum]<=chars_per_file);
+	} else {
+	    assert(r==EOF);
+	    assert(n_read[filenum]==chars_per_file);
+	    still_live[indirectnum] = still_live[n_live-1];
+	    n_live--;
+	}
+    }
+#else
+    n_live = n_live; bytes_per_read = bytes_per_read;
+#endif
+    {
+	int r = destroy_dbufio_fileset(bfs);
+	assert(r==0);
+    }
+    for (int i=0; i<N; i++) {
+	{
+	    int r = unlink(fnames[i]);
+	    assert(r==0);
+	}
+	{
+	    int r = close(fds[i]);
+	    assert(r==0);
+	}
+	assert(n_read[i]==chars_per_file);
+    }
+}
+
+				  
+
+int main (int argc __attribute__((__unused__)), char *argv[]__attribute__((__unused__))) {
+//    test1(0, 1);
+//    test1(1, 1);
+//    test1(15, 1);
+//    test1(100, 1);
+    test1(30, 3); // 3 and M are relatively prime.  But 3 divides the file size.
+    return 0;
+}