summaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.13' into 5.14Qt Forward Merge Bot2019-08-314-7/+6375
|\ | | | | | | Change-Id: I59e920204d60b5c50970f6ea07b9f919bf6f0d52
| * Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-08-282-7/+2
| |\ | | | | | | | | | Change-Id: I8cf29b833517fe3429e33229d223ddf1c8314e7f
| | * Change address URL for local tests in tst_integrationAssam Boudjelthia2019-08-262-7/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QUrl with address => 31 characters were failing because the socket connection was disconnecting while being used and causing a segfault. This re-enable tests affected to increase coverage, however, Another ticket for the root cause of this bug will be issued. Fixes: QTBUG-61552 Task-number: QTBUG-77462 Change-Id: I0fdba6a018e7cea85cef9de154ad80565f6d0601 Reviewed-by: Samuli Piippo <samuli.piippo@qt.io>
| * | Binary compatibility file against Qt5.13.0 for QtRemoteObjectsMilla Pohjanheimo2019-08-142-0/+6373
| | | | | | | | | | | | | | | | | | | | | | | | BC file added and also global/global.cfg that enables the creation of the bc files. Change-Id: Ifddf37a15b0d67d3257d0bb4d204d4e55bedd2e5 Reviewed-by: Sergio Ahumada <sahumada@texla.cl>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-08-031-1/+1
|\| | | | | | | | | | | Change-Id: I217f6c3ce5d90f02868b9b075445a42b3a9c250e
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-271-1/+1
| |\| | | | | | | | | | Change-Id: I99b94598f677ccba5d21069240b8b83bf5f15d18
| | * Fix TestModelView::testModelTest flakiness - againLiang Qi2019-07-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It seems fetchAndWait() takes between 10s to 14s on the CI/Qemu, increase timeout from 15s to 25s. Similar thing was done in 6eb36c47776e5f4c300f43fd191429af0664b3e5 before. Task-number: QTBUG-63152 Task-number: QTBUG-76807 Change-Id: I06fc395d1a8b6c00cb66758e104250c553d59d26 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-07-161-4/+0
|\| | | | | | | | | | | Change-Id: I665f4de4ed90f91f4287af1bd55b51f852e70799
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-07-111-4/+0
| |\| | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf Change-Id: Ia376610d1350e3d22edc3714f90e593691a5095d
| | * Fix yet another -Wdeprecated-copy warningMarc Mutz2019-07-031-4/+0
| | | | | | | | | | | | | | | Change-Id: Ief4af43c6e158f7a3eda09700f3027c5f04050c5 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Model Utilities: fix a quadratic loopMarc Mutz2019-07-041-9/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Found while eradicating Q_FOREACH loops. Calling QVector::remove() in a loop makes the operation have quadratic complexity. Fix by using std::remove_if + lambda, which is linear. Change-Id: I1390d4cf3e562aa9ade06097aed4098404310b1f Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | | Eradicate some simple Q_FOREACH loopsMarc Mutz2019-07-043-34/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All these are relatively easily verified to be safe: They clearly don't modify the container they iterate over, are already const or trivially marked as such. In QRegistrySource::removeServer(), merge with an adjacent loop. In tst_modelview.cpp, replaced a loop over QHash::keys() + QHash::op[] with an STL-style loop and it.key()/it.value(). In tst_signature.cpp, replaced a QStringList with a C array of QLatin1Strings, saving a qAsConst call. Add some reserve() as a drive-by. Change-Id: Ibf09371ca8b58437834734c3bab997527219c823 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* | | Port from QLatin1Literal to QLatin1StringLiang Qi2019-06-144-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QLatin1Literal is an undocumented and deprecated typedef for QLatin1String, just use the original. Just follow qtbase 45373c19243aea335897ba0f371a1dd53ae8f079. Change-Id: I03c144f405e11b77460f7a8e5eff089952ecc64b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | | Merge remote-tracking branch 'origin/5.13' into devQt Forward Merge Bot2019-06-0812-18/+93
|\| | | | | | | | | | | Change-Id: I8145201d011f0bb138ac1ac9738047edda23fb80
| * | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-06-0212-18/+93
| |\| | | | | | | | | | Change-Id: I75bde54fcc6c8380269a54a5a2ca0f42c34a519c
| | * Make sure class enums work dynamicallyBrett Stottlemyer2019-05-204-9/+22
| | | | | | | | | | | | | | | | | | | | | | | | This includes making sure typed class enums get the right size. This also fixes other enums that were incorrectly tested as variants. Change-Id: Ie330ceee91fe4192a11405a4e231f1750247cd5e Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | * Support Q_GADGETs with enumsBrett Stottlemyer2019-05-207-1/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous logic for sending/receiving the Q_GADGET definition used a custom GadgetsData type on both sides (a QByteArray for name and a QList of name/type pairs for each member). This isn't really needed on the send side, we just need the QMetaObject for the class. This simplifies the logic on the send side, as we no longer need to copy data around and merge duplicate types, and it allows extension to getting enums. On the receive side, we do need to copy the data. In particular, there can be nested types, where one POD includes another or an enum from another type. It is easier to extend the class if it doesn't need to support the send operation as well. On the send side, we now have serializeGadgets() which takes the pointers for gadget metaobjects as well as the list of needed QMetaEnum types. Using these, it constructs the list of necessary types to serialize and marshalls those. On the receive side, there is registerGadgets which uses the extended GadgetData struct (now including the data needed to create dynamic QMetaEnums) to create metaObjects and register the required types. Change-Id: I80ceff39131c7a2cdcfe592f338ea98f72e76874 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | * Fix dynamic use_enum logic (Qt types only)Brett Stottlemyer2019-05-185-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | This is the first step in getting use_enum working. Since Qt types are already declared, we just need to register them get support into QtRO. Change-Id: I9b1b52f3012fa066acede921db338a755295d8d7 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| | * More fixes for (dynamic) enums in signals and slotsBrett Stottlemyer2019-05-178-14/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This addresses two larger issues with enums and several smaller fixes. First, unlike the recent fix for properties, we need to register enums for queued connections to work and get signal/slot updates over QtRO to work. This change adds said registration. Second, enums are identified with the class they are defined in, so passing updates through a dynamic object requires converting the typenames. The templated enableRemoting methods become interesting here, as the class name depends on the type passed as a template parameter. This change also updates the repc output so enums are properly resolved via the templates. Smaller fixes include updates to some tests and several places where enums were converted to/from int. Note: we need (and have always needed) to convert enums to ints, since the class name is passed as part of the variant serialization which cannot be changed without major digging into qvariant and QDataStream serialization internals. Change-Id: I0a77f85df6a400a7a44394a05c9c2401bee4e4a8 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Fix build when configuring without OpenSSLDimitrios Apostolou2019-06-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes the following compilation error: qtremoteobjects/tests/auto/integration_external/server/main.cpp: In lambda function: qtremoteobjects/tests/auto/integration_external/server/main.cpp:51:53: error: cannot convert ‘QTcpSocket*’ to ‘QIODevice*’ 51 | this->srcNode.addHostSideConnection(conn); | ^~~~ | | | QTcpSocket* Change-Id: I148cf8e4e5cbbad1947d7cab975242dcf589c59e Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
* | | Remove bogus usage of QSslSocket, replace with QTcpSocketDimitrios Apostolou2019-05-271-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Additionally include the forgotten header to fix compilation failures when building without OpenSSL. Change-Id: Ib761d36f676e54ede6a5c4b56bb332d6ed464b4c Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
* | | Fix deprecation warnings in testsFriedemann Kleint2019-05-242-5/+22
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | tst_proxy.cpp:224:33: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_proxy.cpp:224:82: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_proxy.cpp:225:33: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_proxy.cpp:225:66: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_proxy.cpp:293:33: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_proxy.cpp:293:82: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_proxy.cpp:294:33: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_proxy.cpp:294:66: warning: ‘static QSet<T> QSet<T>::fromList(const QList<T>&) [with T = int]’ is deprecated: Use QSet<T>(list.begin(), list.end()) instead. [-Wdeprecated-declarations] tst_modelview.cpp:210:48: warning: ‘QModelIndex QModelIndex::child(int, int) const’ is deprecated: Use QAbstractItemModel::index [-Wdeprecated-declarations] tst_modelview.cpp:210:74: warning: ‘QModelIndex QModelIndex::child(int, int) const’ is deprecated: Use QAbstractItemModel::index [-Wdeprecated-declarations] Change-Id: I888769aaf9fce97595711bc92cfdfb57150c536d Reviewed-by: Christian Ehrlicher <ch.ehrlicher@gmx.de>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Qt Forward Merge Bot2019-05-141-1/+6
|\| | | | | | | Change-Id: Idcef361153ac1f2af9f56619dbfb1227c0d407d7
| * Fix return value propagation through proxiesBrett Stottlemyer2019-05-131-1/+6
| | | | | | | | | | | | | | | | | | | | | | A slot with return values returns a PendingCall object on the replica. If such a replica is used in a proxy, a client would get an invalid QVariant as the reply. This was because the proxy would try to return the pending- call, not wait for the slot return from the original source. This change fixes that issue. Change-Id: I1a25ed49ce51729dde4fa4593845946041493ea1 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Merge remote-tracking branch 'origin/5.12' into 5.13Michael Brasser2019-05-0714-1/+603
|\| | | | | | | | | | | | | Conflicts: src/remoteobjects/doc/src/remoteobjects-index.qdoc Change-Id: Ibbfe308272d71c1906ff7ae382b85629b3d679a7
| * Fix dynamic enums in Props and SignalsBrett Stottlemyer2019-05-073-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | These worked with repc generated types, but can fail when going to dynamic types (such as going through a proxy). This also makes two changes to help with this change: It adds a #define to dump what is sent for dynamic type info for initialization (for debugging the protocol itself) and changes the repc regexes so that a single character enum name can be used (previously the parsing would fail if the unless the name was at least two characters). Change-Id: Ied7219c60a901ef0cb00e06ef44001c6d077af89 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| * Fix handling of QVariant propertiesBrett Stottlemyer2019-05-066-0/+11
| | | | | | | | | | | | | | | | | | | | This required adding additional checks for QVariants that contain custom types like PODs. Change-Id: I5d77a07741000975ce8c5936688eab1af068dd6f Fixes: QTBUG-75056 Fixes: QTBUG-74084 Reviewed-by: Michael Brasser <michael.brasser@live.com>
| * Ensure proxied objects are correctly unproxiedMichael Brasser2019-05-011-1/+5
| | | | | | | | | | | | | | | | | | If the server goes away, we must unproxy the objects. Otherwise if the server returns we will end up attempting to reproxy the same objects. As a side effect the proxy_multprocess autotest becomes more stable. Change-Id: I9f3f0c9e4aa40790da7a999273badb141beacd62 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
| * Fix registration for dynamic ReplicasBrett Stottlemyer2019-05-0114-1/+578
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds new tests for checking that the proxy (which uses dynamic replicas to avoid needing to include headers for all proxied types) works correctly over multiple processes. This found several edge cases not seen in the earlier (single process) proxy auto tests. 1) When sending a new sub class to a dynamic replica, the properties need to be stored in a separate QByteArray and extracted after the metatype info (for both classes and gadgets) is processed. 2) When the templated acquire is used, the metatype information needs to be added to the dynamicTypeManager. 3) There is an edge case where the DynamicApiMap for a null object could not be built correctly. In this case, it needed to be regenerated once a valid object was available for the Replica sub-class. 4) There were several edge cases where the typeName needed to be updated. [ChangeLog][Important Behavior Changes] Qt Remote Objects uses an internal protocol to pass data between processes and/or devices. The same protocol version needs to be used on all sides. The version was bumped from 1.2 to 1.3 in this release, fixing potential crashes (see QTBUG-75017). If there is a mismatch, the connecting node will output a warning and the host node will not send any data. Change-Id: I7af50f16ed370351eb0692d5f4b983848846b504 Fixes: QTBUG-75017 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Increase mingw timeoutv5.13.0-beta3v5.13.0-beta2Brett Stottlemyer2019-04-041-0/+1
|/ | | | | Change-Id: I06f289126d20130161d406dbc498e1bb1832926e Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
* Fix crash with AllowExternalRegistration and QtRO schemaBrett Stottlemyer2019-03-071-0/+14
| | | | | | | | | Using AllowExternalRegistration with a QtRO schema (local, tcp, qnx) does not support overriding the url, so should not be supported. Change-Id: I36108a26fcb992bfeb07632eb88c2156e38ccadc Fixes: QTBUG-73962 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Fix restart/nullptr crashBrett Stottlemyer2019-03-0511-1/+515
| | | | | | | | | | | | | | | The nominal case for a QObject pointer is to emit a change when the value changes, i.e. changing the pointer or setting to nullptr. No signal is emitted when the value is set to the same value again. However, if the server is restarted, it doesn't know what previous values were sent and will send the current values. An edge-case, where the pointer was set to nullptr and nullptr is received again, wasn't properly handled in QtRO before this fix. Change-Id: I11443d69476c5b6fecda11e38919542de8a24eb1 Fixes: QTBUG-74221 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Only include the ssl example and test if the OpenSSL feature is availableAndy Shaw2018-12-071-2/+3
| | | | | Change-Id: I55cfc9bcf96b573a8d614d8fe11a9ad73615a525 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Merge remote-tracking branch 'origin/5.12.0' into 5.12Qt Forward Merge Bot2018-12-052-10/+48
|\ | | | | | | Change-Id: Id2c39f3460be34cec92e65ab94753772ae295340
| * Handle null QAIM propertyv5.12.0-rc2v5.12.0BogDan Vatra2018-11-271-6/+28
| | | | | | | | | | | | | | | | | | Even if a QAIM property is nullptr, we still need to treat it as a model. Task-number: QTBUG-71987 Change-Id: Iea8b3bfda88c564c561a7ab6ed293fd0540f5de4 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
| * Break socket listen out of QRemoteObjectSourceIo constructorv5.12.0-beta4Lee Helpingstine2018-11-061-4/+20
| | | | | | | | | | | | | | | | | | The QRemoteObjectSourceIo constructor that accepted a host address attempted to start listening on that address. This could result in an invalid state with no way to propagate the error. Change-Id: I80c103122794b164788702ba5c37fd10080e9ecd Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* | Clean up windows qmake scopesOliver Wolff2018-11-221-1/+1
|/ | | | | | | | Use 'msvc' instead of 'win32-mscv*' and remove check for Windows CE as it is no longer supported. Change-Id: I1b7415740119b59b77c4beff5171d75e1a7768de Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Add SSL example & auto testBogDan Vatra2018-10-2919-1/+578
| | | | | Change-Id: I3342507fa2ea69f753f1f062c233211fad4791ff Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Unregister types that are not neededv5.12.0-beta3v5.12.0-beta2BogDan Vatra2018-10-091-7/+12
| | | | | | Change-Id: I370e462780e25b788afc599f03ef2189e41d6476 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Add autotest for dynamic gadgetsMichael Brasser2018-09-194-2/+39
| | | | | Change-Id: I58ad45eaa767b4b011eaf2df2686dc0de4ed5f44 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Update import statement to "import QtRemoteObjects 5.12"Michael Brasser2018-08-286-6/+6
| | | | | | | | | | | | | Keep "import QtQml.RemoteObjects 1.0" for compatibility. [ChangeLog][QML] Updated import statement to better match typical module pattern. From QML "import QtRemoteObjects 5.12" should now be used. Change-Id: I0224e387b5bea3be5907485e4fca505f2fb3fb3e Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* Fix crash with ObjectList and in-process replicasMichael Brasser2018-08-221-0/+22
| | | | | Change-Id: I6ed6a125669a4d3537b5e7266d1afe152cfb79f1 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Merge remote-tracking branch 'origin/5.11' into 5.12Qt Forward Merge Bot2018-08-211-0/+31
|\ | | | | | | Change-Id: Ia8536328b6ea1c25923e40b473be54045375d31f
| * Fix issue proxying modelsMichael Brasser2018-08-141-0/+31
| | | | | | | | | | Change-Id: Ie3fd6a57559604aea231aad7936ffbaf9cdce185 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Support externally generated QIODevicesBrett Stottlemyer2018-08-1512-6/+685
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the APIs that will be necessary to create SSL sockets flexibly (and outside of QtRO) and pass them in. The integration tests are extended to show everything works if the tcp/ip connection is created outside QtRO. The Registry is supported by allowing an "external schema" to be set as the HostNode's url, which is then used by the registry as the address for any remoted() source objects. The client Node calls registerExternalSchema() with a std::function callback that can create the client-side QIODevice given the registry provided url. Change-Id: I0f2d0ea270771e096a787134ef87d537769045f6 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-08-071-0/+1
|\| | | | | | | Change-Id: I3d60648e678cb98e7348d472d0b389327c28b9c9
| * Add warning for signature mismatchMichael Brasser2018-08-031-0/+1
| | | | | | | | | | Change-Id: I39f457b3ac573095dcbc95b0d63c67476e683110 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* | Improve support for comments in .rep filesBrett Stottlemyer2018-06-261-0/+6
| | | | | | | | | | | | | | | | Add support for "standalone" comments in the file or class definition. Task-number: QTBUG-68976 Change-Id: Ie59af56daf76bba84292aa6a095a5e105861a41e Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Update parameter list handlingBrett Stottlemyer2018-06-251-14/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix multiline ENUM/POD handling, and allow tabs in parameter lists, to address a couple of reported bugs. This will allow multiline Signal/Slot/Prop parameter lists as well. The enum handling already was set up for multiline processing, the issue was actually (at least for the test provided) in having whitespace before the '}' completing the enum. We allow whitespace before '{' and '}' now, too. Task-number: QTBUG-68975 Task-number: QTBUG-67770 Change-Id: Ic362a3050ba6a6b646bdb9dc8cf28f2f2902b611 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | Refactor integration testsBrett Stottlemyer2018-06-251-339/+254
|/ | | | | | | | | | | | | | This is a refactoring only, it doesn't change the tests (except for two minor fixes), but the refactoring will help in adding support for SSL (in future changesets). The two minor fixes were to 1) Not call connectToNode in persistRestoreTest (there is no Host in this test) 2) Not call enableRemoting twice on the same object in namedObjectTest Change-Id: If61d144ae39a29b0c5f7145a7f27055b5d25cc48 Reviewed-by: Michael Brasser <michael.brasser@live.com>