/** * Test that jacorb handles some self-constructed broken typecodes well. The constructed typecode * is in principal recursive, but not flagged as such. */ public void testBrokenRecursiveTypecode() { Any innerAny = orb.create_any(); innerAny.insert_long(4711); StructMember[] members = {new StructMember("myAny", innerAny.type(), null)}; TypeCode innerTc = orb.create_struct_tc( "IDL:Anonymous:1.0", // repository ID "Anonymous", // Struct name members); TypeCode outerTc = orb.create_struct_tc( "IDL:Anonymous:1.0", // repository ID "Anonymous", // Struct name new StructMember[] {new StructMember("foo", innerTc, null)}); org.jacorb.orb.CDROutputStream out = new org.jacorb.orb.CDROutputStream(orb); out.write_TypeCode(outerTc); org.jacorb.orb.CDRInputStream in = new org.jacorb.orb.CDRInputStream(orb, out.getBufferCopy()); out = new org.jacorb.orb.CDROutputStream(orb); // need to write out typecode, to check it's consistency completely out.write_TypeCode(in.read_TypeCode()); }
private void testArgs(ServerRequestInfo ri, boolean resultAvail) { String op = ri.operation(); org.omg.Dynamic.Parameter[] args = ri.arguments(); if (op.startsWith("_set_") || op.startsWith("_get_")) { boolean isstr; // struct or string? isstr = (op.indexOf("string") != -1); if (op.startsWith("_get_")) { TEST(args.length == 0); if (resultAvail) { // // Test: result // Any result = ri.result(); if (isstr) { String str = result.extract_string(); TEST(str.startsWith("TEST")); } else { s sp = sHelper.extract(result); TEST(sp.sval.startsWith("TEST")); } } } else { TEST(args.length == 1); TEST(args[0].mode == org.omg.CORBA.ParameterMode.PARAM_IN); if (resultAvail) { if (isstr) { String str = args[0].argument.extract_string(); TEST(str.startsWith("TEST")); } else { s sp = sHelper.extract(args[0].argument); TEST(sp.sval.startsWith("TEST")); } } } } else if (op.startsWith("one_")) { String which = op.substring(4); // Which operation? boolean isstr; // struct or string? ParameterMode mode; // The parameter mode if (which.startsWith("string")) isstr = true; else // if which.startsWith("struct")) isstr = false; which = which.substring(7); // Skip <string|struct>_ if (which.equals("return")) { TEST(args.length == 0); if (resultAvail) { // // Test: result // Any result = ri.result(); if (isstr) { String str = result.extract_string(); TEST(str.startsWith("TEST")); } else { s sp = sHelper.extract(result); TEST(sp.sval.startsWith("TEST")); } } } else { TEST(args.length == 1); if (which.equals("in")) mode = org.omg.CORBA.ParameterMode.PARAM_IN; else if (which.equals("inout")) mode = org.omg.CORBA.ParameterMode.PARAM_INOUT; else // if(which.equals("out")) mode = org.omg.CORBA.ParameterMode.PARAM_OUT; TEST(mode == args[0].mode); if (mode != org.omg.CORBA.ParameterMode.PARAM_OUT || resultAvail) { if (isstr) { String str = args[0].argument.extract_string(); TEST(str.startsWith("TEST")); } else { s sp = sHelper.extract(args[0].argument); TEST(sp.sval.startsWith("TEST")); } if (resultAvail) { // // Test: result // Any result = ri.result(); TypeCode tc = result.type(); TEST(tc.kind() == TCKind.tk_void); } } } } else { TEST(args.length == 0); } if (!resultAvail) { // // Test: result is not available // try { Any result = ri.result(); TEST(false); } catch (BAD_INV_ORDER ex) { // Expected } } }
public synchronized void update(RtecEventComm.Event event) { // System.out.println ("in NavWeapDataHandler.update"); Any any_value; PersianRecursion.Data persian_recursion_data; any_value = event.data.any_value; if (any_value.type().equal(PersianRecursion.DataHelper.type())) { // System.out.println ("type matched PersianRecursion.Data"); try { persian_recursion_data = PersianRecursion.DataHelper.extract(any_value); } catch (Exception e) { System.err.println(e.getMessage() + "\nThe stack trace is:\n"); e.printStackTrace(); return; } // System.out.println ("extracted any"); if (persian_recursion_data.criticality_level.equals( RtecScheduler.Criticality_t.HIGH_CRITICALITY) || persian_recursion_data.criticality_level.equals( RtecScheduler.Criticality_t.VERY_HIGH_CRITICALITY)) { // System.out.println ("obtaining high priority persian recursion observable"); PersianObservable pobs_hi = (PersianObservable) ObservablesTable.get("High Consumer Persian Recursion"); // System.out.println ("updating high priority persian recursion observable"); pobs_hi.updatePersianData(persian_recursion_data); // LatencyObservable lobs_hi = // (LatencyObservable) ObservablesTable.get ("High Consumer Execution Time (100 ns)"); // lobs_hi.updateLatency (persian_recursion_data.computation_time); } else { // System.out.println ("obtaining low priority persian recursion observable"); PersianObservable pobs_lo = (PersianObservable) ObservablesTable.get("Low Consumer Persian Recursion"); // System.out.println ("obtained low priority persian recursion observable"); // System.out.println ("updating low priority persian recursion observable"); pobs_lo.updatePersianData(persian_recursion_data); // System.out.println ("updated low priority persian recursion observable"); // LatencyObservable lobs_lo = // (LatencyObservable) ObservablesTable.get ("Low Consumer Execution Time (100 ns)"); // lobs_lo.updateLatency (persian_recursion_data.computation_time); } // System.out.println ("done updating PersianObservables"); received_events_++; // System.out.println ("total events received: " + received_events_); } else if (any_value.type().equal(NavigationHelper.type())) { Navigation navigation_ = NavigationHelper.extract(any_value); // if the navigation data structure's update data flag is set, // update its scheduling data with actual values from the EC if (navigation_.update_data > 0) { navigation_.arrival_time = event.header.creation_time; navigation_.completion_time = event.header.ec_send_time; navigation_.deadline_time += event.header.creation_time; } NavigationObservable nobs = (NavigationObservable) ObservablesTable.get("Navigation"); nobs.updateNavigation(navigation_); Cpu_UsageObservable cobs = (Cpu_UsageObservable) ObservablesTable.get("CPU Usage"); cobs.updateCpu_Usage(navigation_.utilization); OverheadObservable oobs = (OverheadObservable) ObservablesTable.get("Overhead"); oobs.updateOverhead(navigation_.overhead); JitterObservable jobs = (JitterObservable) ObservablesTable.get("Latency Jitter (100 ns)"); jobs.updateJitter( navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time); JitterObservable njobs = (JitterObservable) ObservablesTable.get("Navigation Latency Jitter (100 ns)"); njobs.updateJitter( navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time); DeadlinesObservable dobs = (DeadlinesObservable) ObservablesTable.get("Missed Deadlines"); dobs.updateDeadlines(navigation_.deadline_time, navigation_.completion_time); CriticalDeadlinesObservable cdobs = (CriticalDeadlinesObservable) ObservablesTable.get("Missed Critical Deadlines"); cdobs.updateDeadlines( navigation_.deadline_time, navigation_.completion_time, navigation_.criticality); LatencyObservable lobs = (LatencyObservable) ObservablesTable.get("Latency (100 ns)"); lobs.updateLatency( navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time); LatencyObservable nlobs = (LatencyObservable) ObservablesTable.get("Navigation Latency (100 ns)"); nlobs.updateLatency( navigation_.completion_time, navigation_.computation_time, navigation_.arrival_time); received_events_++; } else if (any_value.type().equal(WeaponsHelper.type())) { Weapons weapons_ = WeaponsHelper.extract(any_value); // if the weapons structure's update data flag is set, update // itss scheduling data with actual values from the EC if (weapons_.update_data > 0) { weapons_.arrival_time = event.header.creation_time; weapons_.completion_time = event.header.ec_send_time; weapons_.deadline_time += event.header.creation_time; } WeaponsObservable wobs = (WeaponsObservable) ObservablesTable.get("Weapons"); ; wobs.updateWeapons(weapons_); Cpu_UsageObservable cobs = (Cpu_UsageObservable) ObservablesTable.get("CPU Usage"); cobs.updateCpu_Usage(weapons_.utilization); OverheadObservable oobs = (OverheadObservable) ObservablesTable.get("Overhead"); oobs.updateOverhead(weapons_.overhead); JitterObservable jobs = (JitterObservable) ObservablesTable.get("Latency Jitter (100 ns)"); jobs.updateJitter(weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time); JitterObservable wjobs = (JitterObservable) ObservablesTable.get("Weapons Latency Jitter (100 ns)"); wjobs.updateJitter( weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time); DeadlinesObservable dobs = (DeadlinesObservable) ObservablesTable.get("Missed Deadlines"); dobs.updateDeadlines(weapons_.deadline_time, weapons_.completion_time); CriticalDeadlinesObservable cdobs = (CriticalDeadlinesObservable) ObservablesTable.get("Missed Critical Deadlines"); cdobs.updateDeadlines(weapons_.deadline_time, weapons_.completion_time, weapons_.criticality); LatencyObservable lobs = (LatencyObservable) ObservablesTable.get("Latency (100 ns)"); lobs.updateLatency( weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time); LatencyObservable wlobs = (LatencyObservable) ObservablesTable.get("Weapons Latency (100 ns)"); wlobs.updateLatency( weapons_.completion_time, weapons_.computation_time, weapons_.arrival_time); received_events_++; } else { System.out.println("Received wrong type information"); System.out.println("Received any_value.type (): [" + any_value.type() + "]"); System.out.println("Expected NavigationHelper.type (): [" + NavigationHelper.type() + "]"); System.out.println("OR WeaponsHelper.type (): [" + WeaponsHelper.type() + "]"); System.out.println( "OR PersianRecursion.DataHelper.type (): [" + PersianRecursion.DataHelper.type() + "]"); } }
/* */ public static void insert(Any paramAny, SetOverrideType paramSetOverrideType) /* */ { /* 43 */ OutputStream localOutputStream = paramAny.create_output_stream(); /* 44 */ paramAny.type(type()); /* 45 */ write(localOutputStream, paramSetOverrideType); /* 46 */ paramAny.read_value(localOutputStream.create_input_stream(), type()); /* */ }