diff --git a/src/Makefile.am b/src/Makefile.am
index 9fbb062..60fc479 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -38,10 +38,6 @@
 	osmo-hlr-db-tool \
 	$(NULL)
 
-noinst_PROGRAMS = \
-	db_test \
-	$(NULL)
-
 osmo_hlr_SOURCES = \
 	auc.c \
 	ctrl.c \
diff --git a/src/db_test.c b/src/db_test.c
deleted file mode 100644
index 0d10797..0000000
--- a/src/db_test.c
+++ /dev/null
@@ -1,87 +0,0 @@
-#include <string.h>
-
-#include <osmocom/core/utils.h>
-#include <osmocom/core/application.h>
-
-#include "db.h"
-#include "hlr.h"
-#include "rand.h"
-#include "logging.h"
-
-static struct hlr *g_hlr;
-
-static int test(const char *imsi, struct db_context *dbc)
-{
-	struct osmo_auth_vector vec[3];
-	int rc, i;
-
-	/* initialize all vectors with a known token pattern */
-	memset(vec, 0x55, sizeof(vec));
-	for (i = 0; i < ARRAY_SIZE(vec); i++)
-		vec[i].res_len = 0;
-
-	rc = db_get_auc(dbc, imsi, 0, vec, ARRAY_SIZE(vec), NULL, NULL);
-	if (rc <= 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Cannot obtain auth tuples for '%s'\n", imsi);
-		return rc;
-	}
-	LOGP(DMAIN, LOGL_INFO, "Obtained %u tuples for subscriber IMSI %s\n",
-		rc, imsi);
-
-	for (i = 0; i < rc; i++) {
-		struct osmo_auth_vector *v = vec + i;
-		LOGP(DMAIN, LOGL_DEBUG, "Tuple %u, auth_types=0x%x\n", i, v->auth_types);
-		LOGP(DMAIN, LOGL_DEBUG, "RAND=%s\n", osmo_hexdump_nospc(v->rand, sizeof(v->rand)));
-		LOGP(DMAIN, LOGL_DEBUG, "AUTN=%s\n", osmo_hexdump_nospc(v->autn, sizeof(v->autn)));
-		LOGP(DMAIN, LOGL_DEBUG, "CK=%s\n", osmo_hexdump_nospc(v->ck, sizeof(v->ck)));
-		LOGP(DMAIN, LOGL_DEBUG, "IK=%s\n", osmo_hexdump_nospc(v->ik, sizeof(v->ik)));
-		LOGP(DMAIN, LOGL_DEBUG, "RES=%s\n", osmo_hexdump_nospc(v->res, v->res_len));
-		LOGP(DMAIN, LOGL_DEBUG, "Kc=%s\n", osmo_hexdump_nospc(v->kc, sizeof(v->kc)));
-		LOGP(DMAIN, LOGL_DEBUG, "SRES=%s\n", osmo_hexdump_nospc(v->sres, sizeof(v->sres)));
-	}
-
-	return rc;
-}
-
-int main(int argc, char **argv)
-{
-	int rc;
-
-	g_hlr = talloc_zero(NULL, struct hlr);
-
-	rc = osmo_init_logging2(g_hlr, &hlr_log_info);
-	if (rc < 0) {
-		fprintf(stderr, "Error initializing logging\n");
-		exit(1);
-	}
-	LOGP(DMAIN, LOGL_NOTICE, "hlr starting\n");
-
-	rc = rand_init();
-	if (rc < 0) {
-		LOGP(DMAIN, LOGL_ERROR, "Error initializing random source\n");
-		exit(1);
-	}
-
-	g_hlr->dbc = db_open(NULL, "hlr.db", true);
-	if (!g_hlr->dbc) {
-		LOGP(DMAIN, LOGL_ERROR, "Error opening database\n");
-		exit(1);
-	}
-
-	/* non-existing subscriber */
-	rc = test("901990123456789", g_hlr->dbc);
-	/* 2G only AUC data (COMP128v1 / MILENAGE) */
-	rc = test("901990000000001", g_hlr->dbc);
-	/* 2G + 3G AUC data (COMP128v1 / MILENAGE) */
-	rc = test("901990000000002", g_hlr->dbc);
-	/* 3G AUC data (MILENAGE) */
-	rc = test("901990000000003", g_hlr->dbc);
-
-	LOGP(DMAIN, LOGL_NOTICE, "Exiting\n");
-
-	db_close(g_hlr->dbc);
-
-	log_fini();
-
-	exit(0);
-}
