2016-12-22 3 views
6

मैं LocalDatastoreServiceTestConfig को कॉन्फ़िगर करना चाहता हूं जैसे कि यौगिक अनुक्रमणिका की आवश्यकता होने पर क्वेरी विफल हो जाएंगी (उदा।, एकाधिक गुणों पर एक प्रकार के साथ एक क्वेरी)। क्या इसे करने का कोई तरीका है?यदि कोई कंपाउंड इंडेक्स की आवश्यकता है तो जावा Google App Engine SDK के लिए परीक्षण कॉन्फ़िगर करने का कोई तरीका है?

मैंने new LocalDatastoreServiceTestConfig().setNoIndexAutoGen(true) की कोशिश की लेकिन इसका कोई प्रभाव नहीं पड़ा।

(वहाँ एक corresponding way to do this with the Python SDK है।)

उत्तर

1

मैं द्वारा मान "असफल" क्या आपका मतलब या कुछ इसी तरह "एक अपवाद फेंक"। यदि ऐसा है, तो आपको autoGenerate विशेषता को WEB-INF/datastore-indexes.xml में गलत पर सेट करना चाहिए।

उदाहरण WEB-INF/datastore-indexes.xml:

<datastore-indexes autoGenerate="false"> 
</datastore-indexes> 

गलत पर autoGenerate स्थापना एक प्रश्न है कि एक समग्र सूचकांक एक अपवाद फेंक की आवश्यकता है कर देगा। उदाहरण कोड:

try { 
    Query q = new Query("Action") 
      .addSort("encrypter", Query.SortDirection.ASCENDING) 
      .addSort("requester", Query.SortDirection.ASCENDING) 
      .addSort("time", Query.SortDirection.DESCENDING); 

    //...snip... 

} catch (Exception e) { 
    log.severe(e.toString()); 
} 

मैं इस परीक्षण किया है और एक अपवाद की उम्मीद के रूप में लॉग मिला:

SEVERE: com.google.appengine.api.datastore.DatastoreNeedIndexException: Query com.google.appengine.api.datastore.dev.LocalCompositeIndexManager$IndexComponentsO 
[email protected] requires a composite index that is not defined. You must update C:\appengine-java-sdk\dev\core1\war\WEB-INF\datastore-indexes.xml or enable au 
toGenerate to have it automatically added. 
The suggested index for this query is: 
    <datastore-index kind="Action" ancestor="false" source="manual"> 
     <property name="encrypter" direction="asc"/> 
     <property name="requester" direction="asc"/> 
     <property name="time" direction="desc"/> 
    </datastore-index> 

अधिक जानकारी के लिए datastore-indexes.xml reference देखते हैं।

+0

क्या आपके पास यूनिट परीक्षण में इस विफलता के कारण होने का एक उदाहरण है, हालांकि? मेरे पास यह सेटिंग है और यह dev सर्वर के अंतर्गत चलते समय क्वेरी विफल होने का कारण बनती है, लेकिन एक ही क्वेरी निष्पादित करने वाले परीक्षण विफल नहीं होते हैं। शायद फ़ाइल को पढ़ने के लिए परीक्षणों के लिए कॉन्फ़िगर करने के लिए मुझे कुछ और करने की आवश्यकता है। –

+0

पुनरुत्पादन उद्देश्यों के लिए, क्या आप अपना परीक्षण कैसे लिखते हैं इसका एक न्यूनतम कार्य उदाहरण प्रदान कर सकते हैं? वैकल्पिक रूप से, आप XmlDocument ऑब्जेक्ट्स के खिलाफ अपने प्रश्नों को परिभाषित करने का प्रयास कर सकते हैं जैसे कि: 'XmlDocument doc = new XmlDocument(); डॉक्टर.लोड (xmlFilePath); ' – Alex