This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch fix/cdutz/reenable-golang-driver-testsuites
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to 
refs/heads/fix/cdutz/reenable-golang-driver-testsuites by this push:
     new b0decedf19 chore(driver/eip): Commented out most "write code" in go 
eip in order to get connect and read working first.
b0decedf19 is described below

commit b0decedf197d521b18866b7ccb3e5a30249e8cba
Author: Christofer Dutz <[email protected]>
AuthorDate: Thu Feb 23 08:50:22 2023 +0100

    chore(driver/eip): Commented out most "write code" in go eip in order to 
get connect and read working first.
---
 plc4go/internal/eip/Writer.go | 387 +++++++++++++++++++++---------------------
 1 file changed, 193 insertions(+), 194 deletions(-)

diff --git a/plc4go/internal/eip/Writer.go b/plc4go/internal/eip/Writer.go
index 9a36a2aa9d..209a318c4c 100644
--- a/plc4go/internal/eip/Writer.go
+++ b/plc4go/internal/eip/Writer.go
@@ -23,7 +23,6 @@ import (
        "context"
        "encoding/binary"
        "strings"
-       "time"
 
        "github.com/apache/plc4x/plc4go/pkg/api/model"
        "github.com/apache/plc4x/plc4go/pkg/api/values"
@@ -97,182 +96,182 @@ func (m Writer) Write(ctx context.Context, writeRequest 
model.PlcWriteRequest) <
                                }
                                return
                        }
-                       items[i] = 
readWriteModel.NewCipWriteRequest(requestPathSize, ansi, eipTag.GetType(), 
elements, data, 0)
+                       items[i] = readWriteModel.NewCipWriteRequest(ansi, 
eipTag.GetType(), elements, data, uint16(requestPathSize))
                }
 
-               if len(items) == 1 {
-                       // Assemble the finished paket
-                       log.Trace().Msg("Assemble paket")
-                       pkt := readWriteModel.NewCipRRData(
-                               readWriteModel.NewCipExchange(
-                                       readWriteModel.NewCipUnconnectedRequest(
-                                               items[0],
-                                               m.configuration.backplane,
-                                               m.configuration.slot,
+               /*              if len(items) == 1 {
+                                       // Assemble the finished paket
+                                       log.Trace().Msg("Assemble paket")
+                                       pkt := readWriteModel.NewCipRRData(
+                                               readWriteModel.NewCipExchange(
+                                                       
readWriteModel.NewCipUnconnectedRequest(
+                                                               items[0],
+                                                               
m.configuration.backplane,
+                                                               
m.configuration.slot,
+                                                               0,
+                                                       ),
+                                                       0,
+                                               ),
+                                               *m.sessionHandle,
                                                0,
-                                       ),
-                                       0,
-                               ),
-                               *m.sessionHandle,
-                               0,
-                               *m.senderContext,
-                               0,
-                               0,
-                       )
-                       // Start a new request-transaction (Is ended in the 
response-handler)
-                       transaction := m.tm.StartTransaction()
-                       transaction.Submit(func() {
-                               // Send the  over the wire
-                               if err := m.messageCodec.SendRequest(ctx, pkt, 
func(message spi.Message) bool {
-                                       eipPacket := 
message.(readWriteModel.EipPacket)
-                                       if eipPacket == nil {
-                                               return false
-                                       }
-                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
-                                       if cipRRData == nil {
-                                               return false
-                                       }
-                                       if eipPacket.GetSessionHandle() != 
*m.sessionHandle {
-                                               return false
-                                       }
-                                       cipWriteResponse := 
cipRRData.GetExchange().GetService().(readWriteModel.CipWriteResponse)
-                                       if cipWriteResponse == nil {
-                                               return false
-                                       }
-                                       return true
-                               }, func(message spi.Message) error {
-                                       // Convert the response into an
-                                       log.Trace().Msg("convert response to ")
-                                       eipPacket := 
message.(readWriteModel.EipPacket)
-                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
-                                       cipWriteResponse := 
cipRRData.GetExchange().GetService().(readWriteModel.CipWriteResponse)
-                                       // Convert the eip response into a 
PLC4X response
-                                       log.Trace().Msg("convert response to 
PLC4X response")
-                                       readResponse, err := 
m.ToPlc4xWriteResponse(cipWriteResponse, writeRequest)
+                                               *m.senderContext,
+                                               0,
+                                               0,
+                                       )
+                                       // Start a new request-transaction (Is 
ended in the response-handler)
+                                       transaction := m.tm.StartTransaction()
+                                       transaction.Submit(func() {
+                                               // Send the  over the wire
+                                               if err := 
m.messageCodec.SendRequest(ctx, pkt, func(message spi.Message) bool {
+                                                       eipPacket := 
message.(readWriteModel.EipPacket)
+                                                       if eipPacket == nil {
+                                                               return false
+                                                       }
+                                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
+                                                       if cipRRData == nil {
+                                                               return false
+                                                       }
+                                                       if 
eipPacket.GetSessionHandle() != *m.sessionHandle {
+                                                               return false
+                                                       }
+                                                       cipWriteResponse := 
cipRRData.GetExchange().GetService().(readWriteModel.CipWriteResponse)
+                                                       if cipWriteResponse == 
nil {
+                                                               return false
+                                                       }
+                                                       return true
+                                               }, func(message spi.Message) 
error {
+                                                       // Convert the response 
into an
+                                                       
log.Trace().Msg("convert response to ")
+                                                       eipPacket := 
message.(readWriteModel.EipPacket)
+                                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
+                                                       cipWriteResponse := 
cipRRData.GetExchange().GetService().(readWriteModel.CipWriteResponse)
+                                                       // Convert the eip 
response into a PLC4X response
+                                                       
log.Trace().Msg("convert response to PLC4X response")
+                                                       readResponse, err := 
m.ToPlc4xWriteResponse(cipWriteResponse, writeRequest)
 
-                                       if err != nil {
-                                               result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                                       Request: writeRequest,
-                                                       Err:     
errors.Wrap(err, "Error decoding response"),
+                                                       if err != nil {
+                                                               result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                                       
Request: writeRequest,
+                                                                       Err:    
 errors.Wrap(err, "Error decoding response"),
+                                                               }
+                                                               return 
transaction.EndRequest()
+                                                       }
+                                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                               Request:  
writeRequest,
+                                                               Response: 
readResponse,
+                                                       }
+                                                       return 
transaction.EndRequest()
+                                               }, func(err error) error {
+                                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                               Request: 
writeRequest,
+                                                               Err:     
errors.New("got timeout while waiting for response"),
+                                                       }
+                                                       return 
transaction.EndRequest()
+                                               }, time.Second*1); err != nil {
+                                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                               Request:  
writeRequest,
+                                                               Response: nil,
+                                                               Err:      
errors.Wrap(err, "error sending message"),
+                                                       }
+                                                       _ = 
transaction.EndRequest()
                                                }
-                                               return transaction.EndRequest()
-                                       }
-                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                               Request:  writeRequest,
-                                               Response: readResponse,
-                                       }
-                                       return transaction.EndRequest()
-                               }, func(err error) error {
-                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                               Request: writeRequest,
-                                               Err:     errors.New("got 
timeout while waiting for response"),
-                                       }
-                                       return transaction.EndRequest()
-                               }, time.Second*1); err != nil {
-                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                               Request:  writeRequest,
-                                               Response: nil,
-                                               Err:      errors.Wrap(err, 
"error sending message"),
+                                       })
+                               } else {
+                                       nb := uint16(len(items))
+                                       offsets := make([]uint16, nb)
+                                       offset := 2 + nb*2
+                                       for i := uint16(0); i < nb; i++ {
+                                               offsets[i] = offset
+                                               offset += 
items[i].GetLengthInBytes(context.Background())
                                        }
-                                       _ = transaction.EndRequest()
-                               }
-                       })
-               } else {
-                       nb := uint16(len(items))
-                       offsets := make([]uint16, nb)
-                       offset := 2 + nb*2
-                       for i := uint16(0); i < nb; i++ {
-                               offsets[i] = offset
-                               offset += 
items[i].GetLengthInBytes(context.Background())
-                       }
 
-                       serviceArr := make([]readWriteModel.CipService, nb)
-                       for i := uint16(0); i < nb; i++ {
-                               serviceArr[i] = items[i]
-                       }
+                                       serviceArr := 
make([]readWriteModel.CipService, nb)
+                                       for i := uint16(0); i < nb; i++ {
+                                               serviceArr[i] = items[i]
+                                       }
 
-                       data := readWriteModel.NewServices(nb, offsets, 
serviceArr, 0)
+                                       data := readWriteModel.NewServices(nb, 
offsets, serviceArr, 0)
 
-                       // Assemble the finished paket
-                       log.Trace().Msg("Assemble paket")
-                       pkt := readWriteModel.NewCipRRData(
-                               readWriteModel.NewCipExchange(
-                                       readWriteModel.NewCipUnconnectedRequest(
-                                               
readWriteModel.NewMultipleServiceRequest(data, 0),
-                                               m.configuration.backplane,
-                                               m.configuration.slot,
+                                       // Assemble the finished paket
+                                       log.Trace().Msg("Assemble paket")
+                                       pkt := readWriteModel.NewCipRRData(
+                                               readWriteModel.NewCipExchange(
+                                                       
readWriteModel.NewCipUnconnectedRequest(
+                                                               
readWriteModel.NewMultipleServiceRequest(data, 0),
+                                                               
m.configuration.backplane,
+                                                               
m.configuration.slot,
+                                                               0,
+                                                       ),
+                                                       0,
+                                               ),
+                                               *m.sessionHandle,
                                                0,
-                                       ),
-                                       0,
-                               ),
-                               *m.sessionHandle,
-                               0,
-                               *m.senderContext,
-                               0,
-                               0,
-                       )
-                       // Start a new request-transaction (Is ended in the 
response-handler)
-                       transaction := m.tm.StartTransaction()
-                       transaction.Submit(func() {
-                               // Send the  over the wire
-                               if err := m.messageCodec.SendRequest(ctx, pkt, 
func(message spi.Message) bool {
-                                       eipPacket := 
message.(readWriteModel.EipPacket)
-                                       if eipPacket == nil {
-                                               return false
-                                       }
-                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
-                                       if cipRRData == nil {
-                                               return false
-                                       }
-                                       if eipPacket.GetSessionHandle() != 
*m.sessionHandle {
-                                               return false
-                                       }
-                                       multipleServiceResponse := 
cipRRData.GetExchange().GetService().(readWriteModel.MultipleServiceResponse)
-                                       if multipleServiceResponse == nil {
-                                               return false
-                                       }
-                                       if 
multipleServiceResponse.GetServiceNb() != nb {
-                                               return false
-                                       }
-                                       return true
-                               }, func(message spi.Message) error {
-                                       // Convert the response into an
-                                       log.Trace().Msg("convert response to ")
-                                       eipPacket := 
message.(readWriteModel.EipPacket)
-                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
-                                       multipleServiceResponse := 
cipRRData.GetExchange().GetService().(readWriteModel.MultipleServiceResponse)
-                                       // Convert the eip response into a 
PLC4X response
-                                       log.Trace().Msg("convert response to 
PLC4X response")
-                                       readResponse, err := 
m.ToPlc4xWriteResponse(multipleServiceResponse, writeRequest)
+                                               *m.senderContext,
+                                               0,
+                                               0,
+                                       )
+                                       // Start a new request-transaction (Is 
ended in the response-handler)
+                                       transaction := m.tm.StartTransaction()
+                                       transaction.Submit(func() {
+                                               // Send the  over the wire
+                                               if err := 
m.messageCodec.SendRequest(ctx, pkt, func(message spi.Message) bool {
+                                                       eipPacket := 
message.(readWriteModel.EipPacket)
+                                                       if eipPacket == nil {
+                                                               return false
+                                                       }
+                                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
+                                                       if cipRRData == nil {
+                                                               return false
+                                                       }
+                                                       if 
eipPacket.GetSessionHandle() != *m.sessionHandle {
+                                                               return false
+                                                       }
+                                                       multipleServiceResponse 
:= cipRRData.GetExchange().GetService().(readWriteModel.MultipleServiceResponse)
+                                                       if 
multipleServiceResponse == nil {
+                                                               return false
+                                                       }
+                                                       if 
multipleServiceResponse.GetServiceNb() != nb {
+                                                               return false
+                                                       }
+                                                       return true
+                                               }, func(message spi.Message) 
error {
+                                                       // Convert the response 
into an
+                                                       
log.Trace().Msg("convert response to ")
+                                                       eipPacket := 
message.(readWriteModel.EipPacket)
+                                                       cipRRData := 
eipPacket.(readWriteModel.CipRRData)
+                                                       multipleServiceResponse 
:= cipRRData.GetExchange().GetService().(readWriteModel.MultipleServiceResponse)
+                                                       // Convert the eip 
response into a PLC4X response
+                                                       
log.Trace().Msg("convert response to PLC4X response")
+                                                       readResponse, err := 
m.ToPlc4xWriteResponse(multipleServiceResponse, writeRequest)
 
-                                       if err != nil {
-                                               result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                                       Request: writeRequest,
-                                                       Err:     
errors.Wrap(err, "Error decoding response"),
+                                                       if err != nil {
+                                                               result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                                       
Request: writeRequest,
+                                                                       Err:    
 errors.Wrap(err, "Error decoding response"),
+                                                               }
+                                                               return 
transaction.EndRequest()
+                                                       }
+                                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                               Request:  
writeRequest,
+                                                               Response: 
readResponse,
+                                                       }
+                                                       return 
transaction.EndRequest()
+                                               }, func(err error) error {
+                                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                               Request: 
writeRequest,
+                                                               Err:     
errors.New("got timeout while waiting for response"),
+                                                       }
+                                                       return 
transaction.EndRequest()
+                                               }, time.Second*1); err != nil {
+                                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
+                                                               Request:  
writeRequest,
+                                                               Response: nil,
+                                                               Err:      
errors.Wrap(err, "error sending message"),
+                                                       }
+                                                       _ = 
transaction.EndRequest()
                                                }
-                                               return transaction.EndRequest()
-                                       }
-                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                               Request:  writeRequest,
-                                               Response: readResponse,
-                                       }
-                                       return transaction.EndRequest()
-                               }, func(err error) error {
-                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                               Request: writeRequest,
-                                               Err:     errors.New("got 
timeout while waiting for response"),
-                                       }
-                                       return transaction.EndRequest()
-                               }, time.Second*1); err != nil {
-                                       result <- 
&plc4goModel.DefaultPlcWriteRequestResult{
-                                               Request:  writeRequest,
-                                               Response: nil,
-                                               Err:      errors.Wrap(err, 
"error sending message"),
-                                       }
-                                       _ = transaction.EndRequest()
-                               }
-                       })
-               }
+                                       })
+                               }*/
        }()
        return result
 }
@@ -316,35 +315,35 @@ func (m Writer) ToPlc4xWriteResponse(response 
readWriteModel.CipService, writeRe
                code := decodeResponseCode(cipReadResponse.GetStatus())
                responseCodes[tagName] = code
        case readWriteModel.MultipleServiceResponse: //Multiple response
-               multipleServiceResponse := response
-               nb := multipleServiceResponse.GetServiceNb()
-               arr := make([]readWriteModel.CipService, nb)
-               read := 
utils.NewReadBufferByteBased(multipleServiceResponse.GetServicesData(), 
utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
-               total := read.GetTotalBytes()
-               for i := uint16(0); i < nb; i++ {
-                       length := uint16(0)
-                       offset := multipleServiceResponse.GetOffsets()[i] - 
multipleServiceResponse.GetOffsets()[0] //Substract first offset as we only 
have the service in the buffer (not servicesNb and offsets)
-                       if i == nb-1 {
-                               length = uint16(total) - offset //Get the rest 
if last
-                       } else {
-                               length = 
multipleServiceResponse.GetOffsets()[i+1] - offset - 
multipleServiceResponse.GetOffsets()[0] //Calculate length with offsets 
(substracting first offset)
-                       }
-                       serviceBuf := 
utils.NewReadBufferByteBased(read.GetBytes()[offset:offset+length], 
utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
-                       var err error
-                       arr[i], err = 
readWriteModel.CipServiceParseWithBuffer(context.Background(), serviceBuf, 
length)
-                       if err != nil {
-                               return nil, err
-                       }
-               }
-               services := readWriteModel.NewServices(nb, 
multipleServiceResponse.GetOffsets(), arr, 0)
-               for i, tagName := range writeRequest.GetTagNames() {
-                       if writeResponse, ok := 
services.Services[i].(readWriteModel.CipWriteResponse); ok {
-                               code := 
decodeResponseCode(writeResponse.GetStatus())
-                               responseCodes[tagName] = code
-                       } else {
-                               responseCodes[tagName] = 
model.PlcResponseCode_INTERNAL_ERROR
-                       }
-               }
+               /*              multipleServiceResponse := response
+                                               nb := 
multipleServiceResponse.GetServiceNb()
+                                               arr := 
make([]readWriteModel.CipService, nb)
+                                               read := 
utils.NewReadBufferByteBased(multipleServiceResponse.GetServicesData(), 
utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
+                                               total := read.GetTotalBytes()
+                                               for i := uint16(0); i < nb; i++ 
{
+                                                       length := uint16(0)
+                                                       offset := 
multipleServiceResponse.GetOffsets()[i] - 
multipleServiceResponse.GetOffsets()[0] //Substract first offset as we only 
have the service in the buffer (not servicesNb and offsets)
+                                                       if i == nb-1 {
+                                                               length = 
uint16(total) - offset //Get the rest if last
+                                                       } else {
+                                                               length = 
multipleServiceResponse.GetOffsets()[i+1] - offset - 
multipleServiceResponse.GetOffsets()[0] //Calculate length with offsets 
(substracting first offset)
+                                                       }
+                                                       serviceBuf := 
utils.NewReadBufferByteBased(read.GetBytes()[offset:offset+length], 
utils.WithByteOrderForReadBufferByteBased(binary.LittleEndian))
+                                                       var err error
+                                                       arr[i], err = 
readWriteModel.CipServiceParseWithBuffer(context.Background(), serviceBuf)
+                                                       if err != nil {
+                                                               return nil, err
+                                                       }
+                                               }*/
+               /*              services := readWriteModel.NewServices(nb, 
multipleServiceResponse.GetOffsets(), arr)
+                               for i, tagName := range 
writeRequest.GetTagNames() {
+                                       if writeResponse, ok := 
services.Services[i].(readWriteModel.CipWriteResponse); ok {
+                                               code := 
decodeResponseCode(writeResponse.GetStatus())
+                                               responseCodes[tagName] = code
+                                       } else {
+                                               responseCodes[tagName] = 
model.PlcResponseCode_INTERNAL_ERROR
+                                       }
+                               }*/
        default:
                return nil, errors.Errorf("unsupported response type %T", 
response)
        }

Reply via email to