diff --git a/internal/bbsim/devices/onu.go b/internal/bbsim/devices/onu.go
index 43759c9..583a848 100644
--- a/internal/bbsim/devices/onu.go
+++ b/internal/bbsim/devices/onu.go
@@ -567,6 +567,37 @@
 	}
 }
 
+// Create a TestResponse packet and send it
+func (o *Onu) sendTestResult(msg OmciMessage, stream openolt.Openolt_EnableIndicationServer) error {
+	resp, err := omcilib.BuildTestResult(HexDecode(msg.omciMsg.Pkt))
+	if err != nil {
+		return err
+	}
+
+	var omciInd openolt.OmciIndication
+	omciInd.IntfId = o.PonPortID
+	omciInd.OnuId = o.ID
+	omciInd.Pkt = resp
+
+	omci := &openolt.Indication_OmciInd{OmciInd: &omciInd}
+	if err := stream.Send(&openolt.Indication{Data: omci}); err != nil {
+		onuLogger.WithFields(log.Fields{
+			"IntfId":       o.PonPortID,
+			"SerialNumber": o.Sn(),
+			"omciPacket":   omciInd.Pkt,
+			"msg":          msg,
+		}).Errorf("send TestResult omcisim indication failed: %v", err)
+		return err
+	}
+	onuLogger.WithFields(log.Fields{
+		"IntfId":       o.PonPortID,
+		"SerialNumber": o.Sn(),
+		"omciPacket":   omciInd.Pkt,
+	}).Tracef("Sent TestResult OMCI message")
+
+	return nil
+}
+
 func (o *Onu) handleOmciMessage(msg OmciMessage, stream openolt.Openolt_EnableIndicationServer) {
 
 	onuLogger.WithFields(log.Fields{
@@ -608,6 +639,16 @@
 		"SerialNumber": o.Sn(),
 		"omciPacket":   omciInd.Pkt,
 	}).Tracef("Sent OMCI message")
+
+	// Test message is special, it requires sending two packets:
+	//     first packet: TestResponse, says whether test was started successully, handled by omci-sim
+	//     second packet, TestResult, reports the result of running the self-test
+	// TestResult can come some time after a TestResponse
+	//     TODO: Implement some delay between the TestResponse and the TestResult
+	isTest, err := omcilib.IsTestRequest(HexDecode(msg.omciMsg.Pkt))
+	if (err == nil) && (isTest) {
+		o.sendTestResult(msg, stream)
+	}
 }
 
 func (o *Onu) storePortNumber(portNo uint32) {
@@ -834,7 +875,6 @@
 				}).Errorf("Error while transitioning ONU State %v", err)
 			}
 		}
-
 	}
 }
 
diff --git a/internal/common/omci/mibpackets.go b/internal/common/omci/mibpackets.go
index 99ebb56..403efa4 100755
--- a/internal/common/omci/mibpackets.go
+++ b/internal/common/omci/mibpackets.go
@@ -163,6 +163,53 @@
 	return hexEncode(pkt)
 }
 
+// Return true if msg is an Omci Test Request
+func IsTestRequest(payload []byte) (bool, error) {
+	_, _, msgType, _, _, _, err := omcisim.ParsePkt(payload)
+	if err != nil {
+		return false, err
+	}
+
+	return ((msgType & 0x1F) == 18), nil
+}
+
+func BuildTestResult(payload []byte) ([]byte, error) {
+	transactionId, deviceId, _, class, instance, _, err := omcisim.ParsePkt(payload)
+
+	if err != nil {
+		return []byte{}, err
+	}
+
+	resp := make([]byte, 26)
+	resp[0] = byte(transactionId >> 8)
+	resp[1] = byte(transactionId & 0xFF)
+	resp[2] = 27 // Upper nibble 0x0 is fixed (0000), Lower nibbles defines msg type (TestResult=27)
+	resp[3] = deviceId
+	resp[4] = byte(class >> 8)
+	resp[5] = byte(class & 0xFF)
+	resp[6] = byte(instance >> 8)
+	resp[7] = byte(instance & 0xFF)
+	resp[8] = 0  // high byte of contents length
+	resp[9] = 17 // low byte of contents length
+	// Each of these is a 1-byte code
+	// follow by a 2-byte (high, low) value
+	resp[10] = 1 // power feed voltage
+	resp[11] = 0
+	resp[12] = 123 // feed voltage 123 mV, 20 mv res --> 6mv
+	resp[13] = 3   // received optical power
+	resp[14] = 1
+	resp[15] = 200 // 456 decibel-microwatts, 0.002 dB res --> 0.912 db-mw
+	resp[16] = 5   // mean optical launch power
+	resp[17] = 3
+	resp[18] = 21 // 789 uA, 2uA res --> 394uA
+	resp[19] = 9  // laser bias current
+	resp[20] = 38
+	resp[21] = 148 // 9876 deg C, 1/256 resolution --> 38.57 Deg C
+	resp[22] = 12  // temperature
+
+	return resp, nil
+}
+
 // TODO understand and refactor
 
 func CreateGalEnetRequest(tid uint16) ([]byte, error) {
