gRPC testing - basic info
Hi,
I'm working on ReadyAPI 3.40.1 and can see that it support gRPC testing. Can anybody explain how to use it? I'll try "Import API definition" from API menu and select simple proto file as below (and others proto files found in Internet):
syntax = "proto3";
package tutorial;
message Greet {
string greeting = 1;
string username = 2;
}
but Ready API says always "Failed to import definition".
Or any .proto file that works? I'll try to use .proto and gRPC testing but now it's hard to start.
In logs I can see:
2022-06-28 15:10:23,458 ERROR [SoapUI] An error occurred [Index 0 out of bounds for length 0], see error log for details
2022-06-28 15:10:23,458 ERROR [errorlog] Index 0 out of bounds for length 0
2022-06-28 15:10:23,459 ERROR [errorlog] java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at com.smartbear.ready.ui.project.definitions.DefineAutomaticallyDefinition.addApiToProject(DefineAutomaticallyDefinition.java:108) ~[ready-api-soapui-pro-3.40.1.jar:3.40.1]
at com.smartbear.ready.ui.project.importapi.BaseImportAPITab.addApi(BaseImportAPITab.java:138) ~[ready-api-soapui-pro-3.40.1.jar:3.40.1]
at com.smartbear.ready.ui.project.importapi.MyComputerTab.addApi(MyComputerTab.java:82) ~[ready-api-soapui-pro-3.40.1.jar:3.40.1]
at com.smartbear.ready.ui.project.importapi.ImportApiDialogModel$3$1.actionPerformed(ImportApiDialogModel.java:77) ~[ready-api-soapui-pro-3.40.1.jar:3.40.1]
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) ~[?:?]
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) ~[?:?]
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) ~[?:?]
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) ~[?:?]
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279) ~[?:?]
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) ~[?:?]
at java.awt.Component.processMouseEvent(Component.java:6648) ~[?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3392) ~[?:?]
at java.awt.Component.processEvent(Component.java:6413) ~[?:?]
at java.awt.Container.processEvent(Container.java:2266) ~[?:?]
at java.awt.Component.dispatchEventImpl(Component.java:5022) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2324) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4854) ~[?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) ~[?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) ~[?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2310) ~[?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2797) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4854) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:728) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:722) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) [?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) [?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) [?:?]
at java.awt.EventQueue$5.run(EventQueue.java:752) [?:?]
at java.awt.EventQueue$5.run(EventQueue.java:750) [?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:749) ~[?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) ~[?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117) ~[?:?]
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:191) ~[?:?]
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:236) ~[?:?]
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:234) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:318) ~[?:?]
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:234) ~[?:?]
at java.awt.Dialog.show(Dialog.java:1080) ~[?:?]
at java.awt.Component.show(Component.java:1749) ~[?:?]
at java.awt.Component.setVisible(Component.java:1696) ~[?:?]
at java.awt.Window.setVisible(Window.java:1037) ~[?:?]
at java.awt.Dialog.setVisible(Dialog.java:1016) ~[?:?]
at com.eviware.soapui.support.UISupport.showDialog(UISupport.java:969) ~[ready-api-soapui-3.40.1.jar:?]
at com.smartbear.ready.ui.actions.common.services.importapi.ImportApiDialogAction.perform(ImportApiDialogAction.java:24) ~[ready-api-soapui-pro-3.40.1.jar:3.40.1]
at com.smartbear.ready.ui.actions.common.services.importapi.ImportApiDialogAction.perform(ImportApiDialogAction.java:1) ~[ready-api-soapui-pro-3.40.1.jar:3.40.1]
at com.eviware.soapui.support.action.swing.SwingActionDelegate.actionPerformed(SwingActionDelegate.java:200) ~[ready-api-soapui-3.40.1.jar:3.40.1]
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) ~[?:?]
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) ~[?:?]
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) ~[?:?]
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) ~[?:?]
at javax.swing.AbstractButton.doClick(AbstractButton.java:374) ~[?:?]
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1028) ~[?:?]
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1072) ~[?:?]
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297) ~[?:?]
at java.awt.Component.processMouseEvent(Component.java:6648) ~[?:?]
at javax.swing.JComponent.processMouseEvent(JComponent.java:3392) ~[?:?]
at java.awt.Component.processEvent(Component.java:6413) ~[?:?]
at java.awt.Container.processEvent(Container.java:2266) ~[?:?]
at java.awt.Component.dispatchEventImpl(Component.java:5022) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2324) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4854) ~[?:?]
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4948) ~[?:?]
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4575) ~[?:?]
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4516) ~[?:?]
at java.awt.Container.dispatchEventImpl(Container.java:2310) ~[?:?]
at java.awt.Window.dispatchEventImpl(Window.java:2797) ~[?:?]
at java.awt.Component.dispatchEvent(Component.java:4854) ~[?:?]
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:779) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:728) ~[?:?]
at java.awt.EventQueue$4.run(EventQueue.java:722) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) [?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) ~[?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:752) ~[?:?]
at java.awt.EventQueue$5.run(EventQueue.java:750) ~[?:?]
at java.security.AccessController.doPrivileged(AccessController.java:399) [?:?]
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) [?:?]
at java.awt.EventQueue.dispatchEvent(EventQueue.java:749) [?:?]
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) [?:?]
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) [?:?]
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) [?:?]
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) [?:?]
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90) [?:?]
Hi aneurysm
I think your .proto file is not complete enough hence the error.
Here is a good example of a .proto file structure
https://gist.github.com/agreatfool/5e3a41052c6dd2f6d04b30901fc0269b
In ReadyAPI, there is a gRPC sample project that you can import from the Dashboard panel. It uses a docker image for the service. It might get you started!