Index: uspace/drv/bus/usb/usbdiag/tests.c
===================================================================
--- uspace/drv/bus/usb/usbdiag/tests.c	(revision cec130b59435e0b961988adaf7952d4f54d3c38d)
+++ uspace/drv/bus/usb/usbdiag/tests.c	(revision 0fbe27d1d60c8b0ddc8c6b3bcb01514adf2a9e1b)
@@ -41,4 +41,72 @@
 #define NAME "usbdiag"
 
+
+int usb_diag_stress_intr_out(usb_diag_dev_t *dev, int cycles, size_t size)
+{
+	if (!dev)
+		return EBADMEM;
+
+	char *buffer = (char *) malloc(size);
+	if (!buffer)
+		return ENOMEM;
+
+	memset(buffer, 42, size);
+
+	// TODO: Are we sure that no other test is running on this endpoint?
+
+	usb_log_info("Performing interrupt out stress test on device %s.", ddf_fun_get_name(dev->fun));
+	int rc = EOK;
+	for (int i = 0; i < cycles; ++i) {
+		// Write buffer to device.
+		if ((rc = usb_pipe_write(dev->intr_out, buffer, size))) {
+			usb_log_error("Interrupt OUT write failed. %s\n", str_error(rc));
+			break;
+		}
+	}
+
+	free(buffer);
+	return rc;
+}
+
+int usb_diag_stress_intr_in(usb_diag_dev_t *dev, int cycles, size_t size)
+{
+	if (!dev)
+		return EBADMEM;
+
+	char *buffer = (char *) malloc(size);
+	if (!buffer)
+		return ENOMEM;
+
+	// TODO: Are we sure that no other test is running on this endpoint?
+
+	usb_log_info("Performing interrupt in stress test on device %s.", ddf_fun_get_name(dev->fun));
+	int rc = EOK;
+	for (int i = 0; i < cycles; ++i) {
+		// Read device's response.
+		size_t remaining = size;
+		size_t transferred;
+
+		while (remaining > 0) {
+			if ((rc = usb_pipe_read(dev->intr_in, buffer + size - remaining, remaining, &transferred))) {
+				usb_log_error("Interrupt IN read failed. %s\n", str_error(rc));
+				break;
+			}
+
+			if (transferred > remaining) {
+				usb_log_error("Interrupt IN read more than expected.\n");
+				rc = EINVAL;
+				break;
+			}
+
+			remaining -= transferred;
+		}
+
+		if (rc)
+			break;
+	}
+
+	free(buffer);
+	return rc;
+}
 
 int usb_diag_stress_bulk_out(usb_diag_dev_t *dev, int cycles, size_t size)
Index: uspace/drv/bus/usb/usbdiag/tests.h
===================================================================
--- uspace/drv/bus/usb/usbdiag/tests.h	(revision cec130b59435e0b961988adaf7952d4f54d3c38d)
+++ uspace/drv/bus/usb/usbdiag/tests.h	(revision 0fbe27d1d60c8b0ddc8c6b3bcb01514adf2a9e1b)
@@ -39,4 +39,6 @@
 #include "device.h"
 
+int usb_diag_stress_intr_out(usb_diag_dev_t *, int, size_t);
+int usb_diag_stress_intr_in(usb_diag_dev_t *, int, size_t);
 int usb_diag_stress_bulk_out(usb_diag_dev_t *, int, size_t);
 int usb_diag_stress_bulk_in(usb_diag_dev_t *, int, size_t);
